"S. Doaitse Swierstra" <doai...@cs.uu.nl> writes:

>>      then (s1 ++ s2 ++ s3 ++ s4) where
>>              s1 = "Golds "
>>              s2 = show (gold s g)
>>              s3 = ", Silvers "
>>              s4 = show (silver s g)

> If you want to keep the definitions local to the expression you should write

..but 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 least not in the non-functional language tradition, where temporary
variables are scattered all over.   So instead of doing:

   let ns y = not (isSpace y)
       f x = takeWhile ns x
   in map f

We can use anonymous functions in place of the uninformatively named
ones: 

   map (\x -> takeWhile (\y -> not (isSpace y)) x)

and use partial application toward point-free-ness:

   map (takeWhile (not . isSpace))

which IMO is a lot easier to read, taking up less screen and mind estate.

Of course it's possible to overdo the point-free thing (commonly
referred to as "pointless"), but I think it's great when you can
eliminate gratuitous naming like this. 

-k
-- 
If I haven't seen further, it is by standing in the footprints of giants
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to