On Fri, 2008-10-03 at 21:02 +0100, Andrew Coppin wrote:
> Jonathan Cast wrote:
> > On Fri, 2008-10-03 at 20:43 +0100, Andrew Coppin wrote:
> >   
> >> OK. So it's broken "for compatibility" then? (Presumably any time you
> >> change something from the Prelude, mass breakage ensues!)
> >>     
> >
> > I'm not a big fan of backward-compatibility myself, but changing Monad
> > to be a sub-class of Applicative actually would have broken every monad
> > instance in existence (at the time Applicative was added, since it
> > didn't have any instances yet).  I don't know what proportion of Haskell
> > programs/libraries/etc. have at least one Monad instance in them, but I
> > would guess it's high.
> >   
> 
> Hmm, that's quite a lot of breakage.
> 
> So if it had been set up this way from day 1, we wouldn't be having this 
> conversation, but it's now too expensive to change it. Is that basically 
> what it comes down to?

Sort of.  (Although I note that Monad isn't a sub-class of Functor,
either, and I think those are coeval.)  It is too expensive to change it
during the period between when Applicative was discovered and now.  But
that could change in the future --- I'm sure a much higher of types with
Monad instances happen to have Applicative instances as well now.  If
that proportion rises by enough, the backward compatibility argument
would become less compelling.

jcc


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to