Haskell 2010: libraries
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)
> with the implicit Prelude import being changed to
> 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
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
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).
More information about the Haskell-prime