Functor => Applicative => Monad

Stephen Tetley stephen.tetley at
Sun Dec 12 21:16:02 CET 2010

I suspect there are few "modern" Monad instances that aren't already
Functor and Applicative [*]. Where I see the change to the hierarchy
being problematic is it out dates an awful lot of documentation
especially text books which do cover the Monad type class (Monad is
much more central to the teaching than say Data.Time or exceptions -
old exceptions were in RWH but perhaps not featured elsewhere). You
can't apply patches to books - the only mitigation you can perform is
to make changes as the language standard changes.

Then there's the second issue of renaming functions and eliminating
duplicates - perhaps 2 proposals would have been better?

[*] For some definition of modern - the only one I can think of that I
use is Andy Gill's Dot Monad which is a State-Writer monad, monadic
bind within the do-notation is the "trick" to make this Monad elegant
and usable.

More information about the Libraries mailing list