On Mon, 2008-10-13 at 13:37 -0700, Daryoush Mehrtash wrote: > Question 1: Why are there lazy and strict modules of some monads? > (e.g. Control.Monad.State)
Because both are useful, for different purposes. (For the same reason that it's helpful, in general, to have both eager and lazy evaluation in the same language --- sometimes one version is more efficient, sometimes the other one is). > > Question 2: If I define a new monad (say XYZ), does it have to be as > Control.Monad.XYZ module? No. Haskell has neither a requirement nor a convention that monads go in Control.Monad. Control.Monad.* is simply the home of the MTL library, which contains a number of exceptionally useful monads; new monads that aren't as exceptionally general-purpose as MTL probably shouldn't go there, to reduce clutter. jcc _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe