Haskell 2010: libraries

Simon Marlow marlowsd at gmail.com
Wed Jul 15 10:39:55 EDT 2009


On 14/07/2009 15:04, Ian Lynagh wrote:
> On Tue, Jul 14, 2009 at 07:48:36AM +0100, Sittampalam, Ganesh wrote:
>> I don't have any strong opinion about whether there should be a library
>> standard or not, but if there is a standard, how about putting the
>> entire thing (perhaps including the Prelude) under the prefix
>> Haskell2010. or similar? Most of it could be implemented by just
>> re-exporting things from the "real" libraries.
>
> That would be OK with me, although I still think it would be easier for
> us to disentangle the library standardisation effort from the language
> standardisation effort.
>
> I'd suggest
>
>      Haskell.V2010.Data.List (just re-exports from V2011 where possible)
>      Haskell.V2010.Prelude   (just re-exports from V2011 where possible)
>      Haskell.V2011.Data.List
>      Haskell.V2011.Prelude
>
> with the implicit Prelude import being changed to
>      Haskell.V<version>.Prelude
> where<version>  is that latest the compiler supports, unless you say
> e.g. -XHaskell2010.

I find this rather jarring, because it moves versioning from where it 
should be (in the package metadata) to where it shouldn't be (in the 
module names).

So why can't we use package versioning to do this?  Suppose we have a 
'haskell-std' package, with versions starting at 2010, providing modules 
like Data.List.  The problem is that haskell-std:Data.List overlaps with 
base:Data.List.

But there's a solution: we could remove the "standard" modules from 
base, and have them only provided by haskell-std (since base will just 
be a re-exporting layer on top of base-internals, this will be easy to 
do).  Most packages will then have dependencies that look like

   build-depends: base-4.*, haskell-std-2010

(or does it have to be haskell-std-2010.0?)

In some ways this is nice, because we will be able to keep old versions 
of haskell-std much longer than we can keep old versions of base.  And 
in due course, we can move more modules into haskell-std.  That makes an 
incremental approach to library standardisation possible, in the same 
way as we have modularised the language standardisation process.

So, if we have standard Haskell library modules, then I believe they 
should be separate at the package level (as they are now).

Cheers,
	Simon


More information about the Haskell-prime mailing list