The future of the haskell2010/haskell98 packages - AKA Trac #9590

Austin Seipp austin at well-typed.com
Wed Oct 1 16:10:41 UTC 2014


Hi Malcolm,

Withdrawing the packages from GHC's distribution is certainly a
possibility. We did briefly raise that point when we talked yesterday
too, but it wasn't discussed much.

Perhaps some others feel the same, but I imagine more people would be
OK with #2 above as opposed to eliminating it, since we already
lightly break some things anyway. Hopefully we'll really find out
soon.

On Tue, Sep 30, 2014 at 4:00 PM, Malcolm Wallace <malcolm.wallace at me.com> wrote:
> 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
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs
>



-- 
Regards,

Austin Seipp, Haskell Consultant
Well-Typed LLP, http://www.well-typed.com/


More information about the Glasgow-haskell-users mailing list