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

Peter Verswyvelen bugfact at gmail.com
Mon Feb 23 14:09:31 EST 2009

```Sometimes the apply operator \$ can be handy for other purposes too, e.g.
map (\$ 1) [cos, sin, tan]

evaluates to

[cos \$ 1, sin \$ 1, tan \$ 1]

which just evaluates to

[cos 1, sin 1, tan 1]

Note that some consider the following as bad coding style:

f \$ g \$ h \$ x

f . g . h \$ x

On Mon, Feb 23, 2009 at 7:27 PM, Andrew Wagner <wagner.andrew at gmail.com>wrote:

> 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
>>
>
>
> _______________________________________________
> Beginners mailing list