The future of the haskell2010/haskell98 packages - AKA Trac #9590
Malcolm Wallace
malcolm.wallace at me.com
Tue Sep 30 21:00:57 UTC 2014
How about doing the honest thing, and withdrawing both packages in ghc-7.10? Haskell'98 is now 15 years old, and the 2010 standard was never really popular anyway.
Regards,
Malcolm
On 30 Sep 2014, at 21:21, Austin Seipp <austin at well-typed.com> wrote:
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/
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users at haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
More information about the ghc-devs
mailing list