[Haskell-cafe] Backward compatibility

Guy guytsalmaves-h at yahoo.com
Fri May 3 12:23:55 CEST 2013


Ertugrul Söylemez wrote:
> Often demanded changes that may or may not happen in the future:
>
>    * base: Make Functor a superclass of Monad.  One of the two most
>      commonly demanded change to the base library.  Will break lots and
>      lots of code.  Reason:  Would greatly simplify a lot of code.
>
>    * base: Fix the numeric type classes.  The other most commonly
>      demanded change.  Will break lots and lots of code, including most
>      of the base library.  Reason:  Would make numeric code much more
>      sensible and algebraic.

That's what I thought of when I saw the original complaint - GHC is too backwards compatible! There's far too much 
boilerplate because of the Functor => Applicative => Monad mess. Float/Double being Enums is ridiculous. None of this 
gets fixed because of the fear that new GHC won't compile old code.

Perhaps we need some system for maintainers to vote on whether they consider the value of a breaking change to be worth 
the effort of fixing their packages to work with it. In my own code, I usually find that this effort is minor, and I'm 
more than happy to do it in return for a better language/library.

PS The proposal to fix Functor => Applicative => Monad has patches attached for GHC and base, but the backwards 
compatibility bogeyman always seems to trump something that will break a lot of code.




More information about the Haskell-Cafe mailing list