Maybe it's just me, but I think composition chain is MUCH easier to read.

When readning, I'd probably transform the last version to the previous one by 
hand, just to make it more comprehensible.

Sebastian Fischer wrote:

On Mar 10, 2010, at 8:47 AM, Ketil Malde wrote:

I think it is better style to avoid this kind of one-off named
values.  I much prefer:

        then "Golds "++show (gold s g)++...

For some reason, this is a style isse that doesn't get much attention

At the end of the Section on function composition in the tutorial "Learn You a Haskell for Great Good" [1] there is a nice example demonstrating that sometimes it may be preferable to introduce names for readability:

Quote:
In the section about maps and filters, we solved a problem of finding the sum of all odd squares that are smaller than 10,000. Here's what the solution looks like when put into a function.

    oddSquareSum :: Integer
    oddSquareSum = sum (takeWhile (<10000) (filter odd (map (^2) [1..])))
Being such a fan of function composition, I would have probably written that like this:

    oddSquareSum :: Integer
    oddSquareSum = sum . takeWhile (<10000) . filter odd . map (^2) $ [1..]
However, if there was a chance of someone else reading that code, I would have written it like this:

    oddSquareSum :: Integer
    oddSquareSum =
        let oddSquares = filter odd $ map (^2) [1..]
            belowLimit = takeWhile (<10000) oddSquares
        in  sum belowLimit
It wouldn't win any code golf competition, but someone reading the function will probably find it easier to read than a composition chain.

End Quote.

[1]: http://learnyouahaskell.com/higher-order-functions#composition



_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to