Control.Monad, Control.Applicative vs. Data.Foldable, Data.Traversable

Henning Thielemann lemming at
Mon Oct 1 10:06:00 EDT 2007

What is the reason for some of the standard type classes being in 'Data' 
folder and some in 'Control'? Since, say 'Reader' is a monad, an 
applicative thing, an arrow and an instance of other classes - why is it 
located in Control.Monad? Why not Data.Reader? I find it reasonable to 
have a directory for concrete data types and one directory for classes. 
Currently I cannot see, why the Reader data type is in Monad, Monad is in 
Control, but Foldable class is in Data, together with List, Tree and other 
concrete data types.

More information about the Libraries mailing list