Skip main navigation

Dollars in Haskell

Haskell provides mechanisms to control the order of evaluation in functional expressions. This video explores the dollar operator ($).
As you see me here with my big dollar balloon, you might be thinking, aha, he’s going to talk about how to make money from Haskell, how to get rich quick by functional programming. And indeed, banks like Standard Chartered are hiring Haskell developers as fast as we can churn them out from the university here at Glasgow. A recent StackOverflow survey suggests that Haskell developers can expect to earn 100 thousand pounds a year, which is an awful lot of money. But I don’t really want to talk about money. In fact, I want to spend this video discussing the dollar operator and how you use it in your Haskell programs. In the same way that you use operators like + and -
for arithmetic and : and ++ for lists, the dollar operator is another way of handling expressions in the Haskell programming language. Let me try and motivate it in this way… Suppose you see this expression let f x = x squared (the little hat is the power-of sign, so that’s x squared) let f x = x squared in f 2 + 2
and what you’re thinking is: I wonder whether this means (f 2) + 2 or f (2 + 2) It’s all about where the implicit brackets would go. Why don’t you try typing this expression into the TryHaskell runtime interpreter, and see what answer you come back with…
aha, if you’ve done it, you’ll find out the answer is 6 So you get f 2 - which is 2 squared, which is 4, plus 2, which makes 6 The other possible alternative, the incorrect answer is f the implicit brackets there (2+2) which would give us 4 squared which is 16 But the brackets aren’t really there implicitly the brackets are like this because function application has a higher precedence or binds more tightly than all the other inbuilt operators in Haskell So whenever you see a function application you know it eats up the next thing it sees and then the rest of the expression is evaluated later. This is where the dollar operator comes in.
Perhaps you want to evaluate 2+2 and apply that whole expression as the argument of the f function here. So when you write $ that says evaluate the right hand side 2+2 which gives us 4 and then use that as the argument for the function f. Dollar means apply to this right hand side the function f So you see, dollar is all about productivity after all, because rather than two keystrokes, the left and right parentheses you’ve only got one now, for the dollar. Here we are… So Haskell makes you more productive, as well as possibly making you rich Keep on coding!

The dollar operator is useful for greater flexibility in function application, although you could use more brackets instead.

There are further details about dollars on the Learn You a Haskell site, although you haven’t yet been introduced to all the concepts they describe.

This article is from the free online

Functional Programming in Haskell: Supercharge Your Coding

Created by
FutureLearn - Learning For Life

Our purpose is to transform access to education.

We offer a diverse selection of courses from leading universities and cultural institutions from around the world. These are delivered one step at a time, and are accessible on mobile, tablet and desktop, so you can fit learning around your life.

We believe learning should be an enjoyable, social experience, so our courses offer the opportunity to discuss what you’re learning with others as you go, helping you make fresh discoveries and form new ideas.
You can unlock new opportunities with unlimited access to hundreds of online short courses for a year by subscribing to our Unlimited package. Build your knowledge with top universities and organisations.

Learn more about how FutureLearn is transforming access to education