
[...] it's just a pleasure to see all those one-line definitions and feel how power the language should be to allow such cool things.
It is indeed. I find these explicit definitions often much more instructive than purely implicit definitions. But, call me a nitpicker, some of the definitions are still a bit longish for my taste. For example: break :: (a -> Bool) -> [a] -> ([a],[a]) break p xs = span http://undergraduate.csse.uwa.edu.au/units/230.301/lectureNotes/tourofprelud... p' xs where p' x = not http://undergraduate.csse.uwa.edu.au/units/230.301/lectureNotes/tourofprelud... (p x) could be written as: break p = span (not . p) or: and xs = foldr http://undergraduate.csse.uwa.edu.au/units/230.301/lectureNotes/tourofprelud... (&&) True xs as: and = foldr http://undergraduate.csse.uwa.edu.au/units/230.301/lectureNotes/tourofprelud... (&&) True While the second case is pure nitpicking, I find that the point-free definition is much easier to read in the first case. Any reason to use the point-wise notation there? Is it considered to be easier to read or understand?