base package

Ian Lynagh ian at well-typed.com
Sat Feb 23 02:09:16 CET 2013


On Fri, Feb 22, 2013 at 07:52:00PM +0100, Joachim Breitner wrote:
> 
> Of course with too much splitting one runs in the Bane of the Orphaned
> Instances – neither should base-foreign require base-float nor the other
> way around, but "Storable Double" needs to be define somewhere...

This is no different than the question of whether the instance should be
in Foreign.Storable or GHC.Types. One has to import/depend-on the other,
and it doesn't matter which: it's an implementation issue, and doesn't
affect people importing/depending-on the modules/packages.

In this case, GHC.Types.Double is in ghc-prim, so you will presumably
need to leave the instance in Foreign.Storable in base-foreign.

> Also, I notice that there is an issue with “internal” modules (mostly
> GHC.something) that should not be part of some stable API, but needed to
> implement packages further down. Should they just not be considered part
> of the “public” (and PVP-relevant) API? Or should there be two packages,
> e.g. base-pure-internal and base-pure, where the latter re-exports those
> modules that are meant for public consumption?

If it's easy to split out the GHC.* modules, then that's probably
better. If not (e.g. because Public.A imports GHC.B, which import
Public.C, which imports GHC.D) then it's probably not worth the bother.

> So, what is the general opinion?

Looks good to me!


Thanks
Ian




More information about the Glasgow-haskell-users mailing list