
On 27 Mar 2009, at 14:01, Michael Mossey wrote:
Peter Verswyvelen wrote:
You can also get rid of the parentheses like this: thing n = n + fromIntegral $ round $ sqrt n
I'm having a hard time finding an explanation of the dollar signs. What do they do? It looks like they break up the left-ro-right association of function names to arguments.
You're pretty much there! The $ function is simply "apply": f $ a = f a The difference is that this version of application (as opposed to the version written as ' ') has very very low precidence, and can be used to essentially mean "apply this to the whole expression on my right". Of note though, using chains of ($)s as peter did is commonly considered bad style, instead, one should use (.) to build up a function, and then apply it, so not: fromIntegral $ round $ sqrt n But instead: fromIntegral . round . sqrt $ n Why? Because the latter one has more valid expressions and is therefor easier to refactor. For example, in the latter one I may deside that (round . sqrt) is a useful function in itself (lets call it integralSqrt) and refactor: fromIntegral . integralSqrt $ n integralSqrt = round . sqrt With this style, this is simply a matter of copy/paste.
As a beginner, I love how Haskell is filled with so many good ideas, in many areas. The basic concept of functional programming is good, but also Haskell has beautiful syntax that's just pleasing to look at, and also has many convenient features which may not quite qualify as "beautiful" or "elegant" but are just convenient (still a worthy thing).
I'm not sure, most of the convenient things I use in Haskell are also beautiful and elegant, did you have something in mind? Thanks Bob