[Haskell-beginners] Re: the ($) function (was desugaring an example from RWH)

Andrew Wagner wagner.andrew at gmail.com
Mon Feb 23 13:27:01 EST 2009

The $ function is essentialy a "no-op". That is, it literally does nothing.
There is no difference in Haskell between a function and a reference to it.
The only purpose of $ is for grouping. The line in question below could have
been written identically as "fromQty <- atomically (readTVar fromBal)". The
$ groups together everything to the end of the line, and can be used to
avoid parentheses that could add noise to the code.

On Mon, Feb 23, 2009 at 1:18 PM, Michael Easter <codetojoy at gmail.com> wrote:

> re: desugaring.  Thanks Andrew, that worked great!
> I have another, easier question from the same code in RWH:
> bogusTransfer qty fromBal toBal = do
>     fromQty <- atomically $ readTVar fromBal
>     [snip]
> Can someone please explain the ($) function in English? From the type
> signature, it seems to be an "apply function", but I can't quite explain
> when we use it. Clearly, it is used throughout RWH but I haven't found a
> good explanation.
> My guess is that it is when we want an "execution" of a function rather
> than a mere reference to it. Is that accurate?
> thanks again
> Michael
> --
> ----------------------
> Michael Easter
> http://codetojoy.blogspot.com: Putting the thrill back in blog
> http://youtube.com/ocitv -> Fun people doing serious software engineering
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/beginners/attachments/20090223/2834b420/attachment.htm

More information about the Beginners mailing list