
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?