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