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
_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime