[Haskell-cafe] Stacking monads
jonathanccast at fastmail.fm
Fri Oct 3 16:05:34 EDT 2008
On Fri, 2008-10-03 at 12:59 -0700, Jonathan Cast wrote:
> 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.
More information about the Haskell-Cafe