Good point! On Wed, Mar 9, 2016 at 11:48 AM, Ryan Ingram <[email protected]> wrote:
> I think it's more like the non-keyworded default definitions of class > methods, for the same reasons; the default definition has to potentially be > valid for all instances of the class​. > > It's the difference between > > class Applicative m => Monad m where > return :: a -> m a > return = pure -- always valid, but can be overridden in instance > declarations > > and > > class Fuctor f => Applicative f where > (<*>) :: f (a -> b) -> f a -> f b > default (<*>) :: Monad f => f (a -> b) -> f a -> f b > (<*>) = ap -- only valid if matches the type signature above > >
_______________________________________________ ghc-devs mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
