[Haskell-beginners] Re: the ($) function (was desugaring an
example from RWH)
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]
[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
>> 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 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
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Beginners