
I hang out on another forum that is populated by various kinds of computer geeks. There's a fair few programmers in there, as well as nerds of every degree. And yet, every time I post anything written in Haskell, everybody complains that it "looks like line noise". What do "normal" programmers find so puzzling about Haskell? You might guess some of the following: - High-order functions. - Lambda functions. - Algebraic data types. - Lazy evaluation. - Recursion. - Monads. Actually, none of these things were mentioned. The things people have *actually* complained to me about are: - Haskell expressions are difficult to parse. - Several standard library elements have unhelpful names such as "elem", "Eq" and "fst". (My favourite has to be "Ix". I mean, WTH?) - Several standard library functions have names which clash badly with the usual meanings of those names - e.g., "break", "return", "id". - Variable names such as "x" and "f" aren't fabulously helpful to lost programmers trying to find their way. If you take a "typical" lump of C or Java code, there's so much redundancy and noise in it that you can *usually* figure out vaguely what's going on, even if it doesn't completely make sense. When presented with a typical Haskell fragment... uh... well, good luck with that. Let's take Haskell's most celebrated example: qsort [] = [] qsort (x:xs) = qsort (filter (x <) xs) ++ [x] ++ qsort (filter (x >=) xs) To a novice, it's not actually real clear what the arguments to qsort are. You and I know that function application binds much more tightly than (++), but a novice isn't going to know that. You might also not immediately realise that "xs" is also an argument to filter, not just (x <) or whatever. The people I spoke to also seemed pretty confused about the usage of (.) and ($), even after I explained it a few times. Several people also voiced being puzzled about Haskell's layout rules. I'm not sure what we *do* with all this data, but I found it interesting so I thought I'd share. ;-) I've spent the last few years trying to convert a few people to The Haskell Way(tm), but so far I haven't succeeded in the slightest. I just get yelled at for pointing white noise. Heh. Oh well!