[Haskell-cafe] ANN: The Typeclassopedia, and request for feedback

Andrew Coppin andrewcoppin at btinternet.com
Mon Feb 16 15:07:43 EST 2009

Brent Yorgey wrote:
> My hope is that this will be a valuable resource to the Haskell
> community, especially those who are learning.  Any feedback would be
> greatly appreciated, especially if it helps improve the article before
> publication.  A draft can be found here

Excellent work.

I like the way this is a single, thorough documentation that presents 
all the abstractions in a single, coherant account. Kudos. Some others 
have suggested a set of hyperlinked articles; maybe there are actually 
two seperate use-cases here? The document as it stands is a great 
beginning-to-end account of this stuff, but perhaps a seperate reference 
document, nicely hyperlinked, would be nice too? There's *a lot* of type 
signatures to keep straight in your head, and I imagine it's quite easy 
to muddle the different classes up in your head while you're still new 
to them.

I'd echo others' comments about more examples; some of these things are, 
by definition, seriously abstract. Concrete examples can help. 
(Although, obviously, picking good examples isn't as easy as it sounds...)

Similarly, there are lots and *lots* of references. This is a good 
thing, IMHO. But I do feel that a few of them could be expanded a little 
more in-line. Obviously there's no point in you duplicating everything 
that somebody else has already said, but maybe a little more detail? On 
the other hand, maybe this just indicates that somebody needs to write 
summaries for the other topics similar to the excellent one we have 
here! :-D

There are a few little glitches here and there. Since this is only a 
draft, I presume you know that. (E.g., an example uses <$> before you've 
meantioned what it does, there's some text that says something like "a b 
c is an arrow that takes an a and returns a c". Little things like that.)

I do have one little question. Let me see if I can find the quote... Ah, 
here we go:

  "The WrappedMonad and WrappedArrow constructors witness the fact that 
any Monad and any Arrow can be made into an Applicative."

I don't really understand that sentence. Care to elaborate?

More information about the Haskell-Cafe mailing list