
On 01/18/2012 01:52 AM, Brandon Allbery wrote:
On Tue, Jan 17, 2012 at 06:29, Mikhail Vorozhtsov
mailto:mikhail.vorozhtsov@gmail.com> wrote: I wouldn't be too optimistic about convincing GHC HQ. Even making Applicative a superclass of Monad can make Haskell98 nazis come after you in ninja suits.
What?! The only significant complaint I've seen here is that the necessary language support for doing so without breaking more or less every Haskell program currently in existence is difficult to achieve. This is a /big/ exaggeration. What libraries exactly are going to be broken? Bytestring/Text (and all other data-structures-related libraries for that matter)? I don't think so. Network? Wouldn't be surprised if it goes without even a single patch. (Atto)Parsec/Binary/Cereal/*-Builder or Enumerator? A few type signatures (mainly contexts) and/or instances would need to be changed. Transformers? Some instances again. MTL? Looks surprisingly good.
I think with some coordinated effort we could switch the core libraries withing a week. On the client side of things I expect the change to go unnoticed by most people: by now virtually every custom monad has an Applicative instance. Personally, I wouldn't mind being hit by this hierarchy transformation, it is totally worth an hour of adjusting type contexts in my code (I'm currently maintaining ~17KLOC and I think I would need to touch only a handful of places).