[Haskell-cafe] Comments from OCaml Hacker Brian Hurt

Derek Elkins derek.a.elkins at gmail.com
Thu Jan 15 19:17:15 EST 2009

On Thu, 2009-01-15 at 14:11 -0600, John Goerzen wrote:
> On Thu, Jan 15, 2009 at 07:46:02PM +0000, Andrew Coppin wrote:
> > John Goerzen wrote:
> >
> > If we *must* insist on using the most obscure possible name for  
> > everything, can we at least write some documentation that doesn't  
> > require a PhD to comprehend?? (Anybody who attempts to argue that  
> > "monoid" is not actually an obscure term has clearly lost contact with  
> > the real world.)
> Several people have suggested this, and I think it would go a long way
> towards solving the problem.  The problem is: this documentation can
> really only be written by those that understand the concepts,
> understand how they are used practically, and have the time and
> inclination to submit patches.  Experience suggests there may be no
> such people out there :-)
> > As somebody else said, it basically comes down to this: Who the hell is  
> > Haskell actually "for"? If it's seriously intended to be used by  
> > programmers, things need to change. And if things aren't going to  
> > change, then let's all stop pretending that Haskell actually cares about  
> > real programmers.
> It might surprise you to see me say this, but I don't see this
> discussion as necessarily a weakness.  I know of no other language
> community out there that has such a strong participation of both
> academics and applied users.  This is a great strength.  And, of
> course, Haskell's roots are firmly in academia.  
> I think there there is a ton of interest in Haskell from the, ahem,
> "real world" programmer types.  In fact, it seems to me that's where
> Haskell's recent growth has been.  There are a lot of things showing
> up on Hackage relating to networking, Unicode encoding, databases, web
> apps, and the like.
> The nice thing about Haskell is that you get to put the theory in
> front of a lot of people that would like to use it to solve immediate
> programming problems.  But they will only use it if you can explain it
> in terms they understand.

There are plenty of "real world" programmer types who are using these
scarily named things, Monoid, Monad, Functor, Existential
Quantification.  Programmers such as you*.  Despite poor documentation,
which everyone agrees could be improved, they've somehow managed to
understand these things anyway.  My impression is that to most of them
Monoids, Functors, and Monads are Just Another Interface and Existential
Quantification is Just Another Language Feature.  There are poorly
documented interfaces in every language**.  Any "real world" programmer
has some (plenty...) of experience dealing with this issue.  These
programmers do what they need to do to get stuff done.  Again, somehow
they learn how to use these things without waiting for "us" to provide
an "explanation" in "terms they can understand;" too busy trying to get
stuff done.

> There are a number of efforts in that direction: various websites,
> articles, books, libraries, etc.  And I think the efforts are
> succeeding.  But that doesn't mean there is no room for improvement.

No one doubts that there is room for improvement.  However, the
direction is better documentation, not different names.  Better names is
fine, but I have not heard any remotely convincing alternative for any
of the above terms.

* Or me for that matter.  I'm not an academic now and certainly wasn't
when I started learning Haskell.  I didn't know what a monoid was, had
never heard of category theory or monads or functors.  I was using
monads and functors and monoids in less than a month after I started
using Haskell.

** Heck, papers and decades worth of mathematical texts at almost every
level is a heck of a lot more documentation than most "poorly
documented" interfaces have.

More information about the Haskell-Cafe mailing list