
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 -- Underestimating the novelty of the future is a time-honored tradition. (D.G.)