
I hate #1. Let's avoid if unless it's really crucial to some of our users. Simon | -----Original Message----- | From: ghc-devs [mailto:ghc-devs-bounces@haskell.org] On Behalf Of Austin | Seipp | Sent: 30 September 2014 21:21 | To: ghc-devs@haskell.org; glasgow-haskell-users@haskell.org | Subject: The future of the haskell2010/haskell98 packages - AKA Trac | #9590 | | Hello developers, users, friends, | | I'd like you all to weigh in on something - a GHC bug report, that has | happened as a result of making Applicative a superclass of Monad: | | https://ghc.haskell.org/trac/ghc/ticket/9590 | | The very condensed version is this: because haskell2010/haskell98 | packages try to be fairly strictly conforming, they do not have | modules like Control.Applicative. | | Unfortunately, due to the way these packages are structured, many | things are simply re-exported from base, like `Monad`. But | `Applicative` is not, and cannot be imported if you use -XHaskell2010 | and the haskell2010 package. | | The net result here is that haskell98/haskell2010 are hopelessly | broken in the current state: it's impossible to define an instance of | `Monad`, because you cannot define an instance of `Applicative`, | because you can't import it in the first place! | | This leaves us in quite a pickle. | | So I ask: Friends, what do you think we should do? I am particularly | interested in users/developers of current Haskell2010 packages - not | just code that may *be* standard Haskell - code that implies a | dependency on it. | | There was a short discussion between me and Simon Marlow about this in | the morning, and again on IRC this morning between me, Duncan, Edward | K, and Herbert. | | Basically, I only see one of two options: | | - We could make GHC support both: a version of `Monad` without | `Applicative`, and one with it. This creates some complication in the | desugarer, where GHC takes care of `do` syntax (and thus needs to be | aware of `Monad`'s definition and location). But it is, perhaps, quite | doable. | | - We change both packages to export `Applicative` and follow the API | changes in `base` accordingly. | | Note that #1 above is contingent on three things: | | 1) There is interest in this actually happening, and these separate | APIs being supported. If there is not significant interest in | maintaining this, it's unclear if we should go for it. | | 2) It's not overly monstrously complex (I don't think it necessarily | will be, but it might be.) | | 3) You can't like `haskell2010` packages and `base` packages together | in the general case, but, AFAIK, this wasn't the case before either. | | I'd really appreciate your thoughts. This must be sorted out for 7.10 | somehow; the current situation is hopelessly busted. | | -- | Regards, | | Austin Seipp, Haskell Consultant | Well-Typed LLP, http://www.well-typed.com/ | _______________________________________________ | ghc-devs mailing list | ghc-devs@haskell.org | http://www.haskell.org/mailman/listinfo/ghc-devs