I've compared and clearly the former is significantly superior :) I'm rather interested if there are any sound suggestions to resolve the general issue of retrospective type-class extension.
Miguel Mitrofanov wrote: > That won't be a great idea; if I just want my monad to be declared as > one, I would have to write > > instance Functor MyMonad where fmap = ... > instance Pointed MyMonad where pure = ... > instance Applicative MyMonad where (<*>) = ... > instance Monad MyMonad where join = ... > > Compare this with > > instance Monad MyMonad where > return = ... > (>>=) = ... > > and take into account that (>>=) is usually easier to write than join. > > Limestraƫl wrote: >> Then it would be: >> >> class Functor f where >> fmap :: (a -> b) -> f a -> f b >> >> class (Functor f) => Pointed f where >> pure :: a -> f a >> >> class (Pointed f) => Applicative f where >> (<*>) :: f (a -> b) -> f a -> f b >> >> class (Applicative f) => Monad f where >> join :: f (f a) -> f a >> >> This would be a great idea, for the sake of logic, first (a monad >> which is not a functor doesn't make sense), and also to eliminate >> redudancy (fmap = liftM, ap = (<*>), etc.) >> >> 2010/5/20 Tony Morris <tonymor...@gmail.com >> <mailto:tonymor...@gmail.com>> >> >> Ivan Miljenovic wrote: >> > On 20 May 2010 14:42, Tony Morris <tonymor...@gmail.com >> <mailto:tonymor...@gmail.com>> wrote: >> > >> >> We all know that "class (Functor f) => Monad f" is preferable >> but its >> >> absence is a historical mistake. We've all probably tried once: >> >> >> >> instance (Functor f) => Monad f where >> >> >> > >> > Do you mean the reverse of this (instance (Monad m) => Functor m >> where) ? >> > >> Yes. >> >> -- >> Tony Morris >> http://tmorris.net/ >> >> >> _______________________________________________ >> Haskell-Cafe mailing list >> Haskell-Cafe@haskell.org <mailto:Haskell-Cafe@haskell.org> >> http://www.haskell.org/mailman/listinfo/haskell-cafe >> >> >> >> ------------------------------------------------------------------------ >> >> _______________________________________________ >> Haskell-Cafe mailing list >> Haskell-Cafe@haskell.org >> http://www.haskell.org/mailman/listinfo/haskell-cafe -- Tony Morris http://tmorris.net/ _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe