[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

Instead, the following is preferred

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
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/beginners/attachments/20090223/ed10b885/attachment-0001.htm


More information about the Beginners mailing list