
On 1/26/07, Collin Winter
I find it incredibly insulting for you to assert that people who complain about Haskell's difficulty are too lazy and aren't really interested in a better solution. Maybe they just don't want to have to take graduate-level classes in category theory to get their job done. Maybe they want a solution that meets them half-way, one that doesn't require that they understand how to build their own resistors and capacitors in order to make their TV work again (to use your analogy). That's what Meijer means when he says that Haskell is too hard.
I have an odd background in programming (never took a compsci class, did take a graduate computational physics course in my first year of undergrad, taught by an old nuclear physicist, who used nothing but Forth...beat that for bizarre), but since physicists represent an interesting conglomeration of snapshots of the mainstream of programming through the ages, I do have a bit of an archaeological perspective on how people think about "hard." In case the following seems far fetched, let me assure you that four years ago I worked in a high energy physics group on a codebase of a few hundred thousand lines of FORTRAN 77, with no documentation. It had GOTOs. The folks working on this regarded C as a newfangled, difficult language, and some of them were still writing FORTRAN IV or RATFOR. So here's my completely anecdotal view of the history of "hard" in programming: In the beginning there was GOTO. Well, actually there was machine language, then assembler, but we'll skip that. GOTO was king. And then there was this movement among the ivory tower computer scientists called "structured programming." It was considered difficult and complicated, with lots of hard concepts. And then the compsci departments made a concerted effort, taught a generation of students in the new style with no reference whatsoever to what came before. Structured programming suddenly became blasé. How else would you program? And then similar, though smaller and often partial repetitions of this break happened: designing nicer data structures when the Wirth languages came to their height; object oriented programming (which I regard as one of the great intellectual failures of programming). So when the kids are presented with exercises on functors, ADTs, and monads in intro compsci, and the professors pretend that it was always this way, there was never any other way, then they will grow up, they will go forth, and these will be the everyday things. Until then, I will continue to hear people say that map is a scary, unfamiliar object that makes the meaning of code obscure. -- Frederick Ross Graduate Fellow, (|Siggia> + |McKinney>)/sqrt(2) Lab The Rockefeller University