[Haskell-cafe] Haskell & monads for newbies

Claus Reinke claus.reinke at talk21.com
Sat Jul 14 18:01:10 EDT 2007

> Yeah, the laws confused me for a while as well.  Hint to guys writing
> Haskell documentation, we're not all doing CS phD you know ;-)  We 
> just want to get things done ;-)

teachers and tutorials making a fuss about some concept is the 
surest way to guarantee that learners will find that concept difficult
(holds for Monads, functional i/o, Monad laws, Turing machines,
higher order functions, and many other things [*]).

the Monad type class tells you the interface (what operations
you've got, and their types), the Monad laws tell you what all
types implementing that interface should have in common. it
is all just about getting things done!-)

the monadic interface gives you two operations, one to throw
things into a monad thing, and one to chain two monad things
together. the monad laws tell you two useful facts about monad
things thrown together in that way: whatever it is the monad
does, anything just thrown into it will take no part in that action,
and whichever way you use that chaining operation, the 
structure of chaining is irrelevant, only the ordering of chained
monad things matters.


[*] digging out the original paper can often be surprisingly
    enlightening, in the algol way of the original being an
    improvement on all its successors.

[**] "thing" is a technical term that would take too long to
    explain, closely related to those "apples" mentioned in
    another thread;-)

More information about the Haskell-Cafe mailing list