On Mon, 2007-28-05 at 10:35 +0100, Andrew Coppin wrote:
Most of the documents that describe these things begin with "suppose we 
have this extremely complicated and difficult to understand situation... 
now, we want to do X, but the type system won't let us." Which makes it 
seem like these extensions are only useful in extremely complicated and 
rare situations. The fact that my own programs hardly ever result in 
situations where I want to do X but the type system won't let me only 
reinforces this idea. Maybe it's just the kind of code I write...

I think this comes from the mathematical background of most people who write papers about Haskell, personally.  Math is probably the least competently-taught subject on the planet.  (History may share this distinction.  May.)  There's a lot of purely-hypothetical situations ("suppose you'd want to map an enumeration of the set of all blah blah blah blah to the set of blah blah blah") with no sense of motivation or application provided.  As a result to many (obviously not all!) it looks more like random pen-scratchings with no practical use.

Which is a pity.

Because most of it is useful in practical ways.  Even fields whose researchers took pride in being "absolutely useless" are beginning to show themselves as useful.  But math being taught the way it is makes this connection inobvious (to put it mildly) and thus mathematics as a field gets none of the respect and interest it deserves.

Haskell's leading practitioners and cheerleaders tend to be mathematicians first.  There are some who write papers accessible to the work-a-day programmer, but most do not and, as a result, it's often hard to decode motivation for the language's features and extensions.

Now that's the bad news.  The good news is that this is changing.  Five years ago, when I first looked at Haskell and gave up, there was almost nothing available to teach the language that wasn't purest ivory-tower hypothetical situations.  The materials available detailing the language really made it look like you had to be a multiple-Ph.D. in maths and copyright law (that latter just because it's the only thing I can think of more complicated than maths ;)) to be smart enough and well-educated enough to use Haskell.  This is no longer the case.  Simon Peyton-Jones, Don Stewart and a handful of other luminaries in the community (whose names I've temporarily forgotten because I'm lousy with names) are beginning to produce good, high-quality papers on obscure and difficult topics that make these topics -- almost ordinary.  Further, just in the last year the nature of conversations in haskell-cafe has changed dramatically.  I'm seeing a lot more real-world, work-a-day programming questions and answers these days than I did as little as a year ago.

So it's not all hopeless, Andrew (thankfully for obvious dullards like me).

--
Michael T. Richter <ttmrichter@gmail.com> (GoogleTalk: ttmrichter@gmail.com)
Never, ever, ever let systems-level engineers do human interaction design unless they have displayed a proven secondary talent in that area. Their opinion of what represents good human-computer interaction tends to be a bit off-track. (Bruce Tognazzini)