On Sun, Jan 21, 2007 at 12:37:02PM -0600, Nicolas Frisby wrote: > I have another small mtl complaint: ReaderT, for example, requires the > base type to be a Monad in order to make it a Functor. So it's Monad m > => Functor (ReaderT r m) instead of Functor f => Functor (ReaderT r > f), which is what's actually necessary for the instance. Remember, I > did say _small_ complaint. > > I realize this has a bit to do with the class heirarchy and that's a > sensitive issue. Regarding backwards compatibility and interface > changes, note that the Monad m => Monad (ReaderT r m) instance would > be unaffected by this... it's only the Functor => Functor instance. If > someone wants to treat a transformed monad as a functor, then they're > probably savvy enough to specify the base monad as a functor > (especially with the @fmap f = (>>= return . f)@ recipe). They won't > even see a difference unless they are rolling their own monad, since > all mtl monads are also functors.
I agree. I'd like to do the same thing with Applicative. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe