16 May 15:40
Re: Proposal/Idea: Split up base even further
From: Neil Mitchell <ndmitchell <at> gmail.com>
Subject: Re: Proposal/Idea: Split up base even further
Newsgroups: gmane.comp.lang.haskell.libraries
Date: 2008-05-16 13:40:36 GMT
Subject: Re: Proposal/Idea: Split up base even further
Newsgroups: gmane.comp.lang.haskell.libraries
Date: 2008-05-16 13:40:36 GMT
Hi Twan, I think this is already being done to some extent - so things that GHC ties to closely are being moved out of base. See this wiki page: http://hackage.haskell.org/trac/ghc/wiki/PackageReorg#Implementation-specificnotes Thanks Neil On Fri, May 16, 2008 at 1:14 AM, Twan van Laarhoven <twanvl <at> gmail.com> wrote: > Hello librarians, > > Here is an idea to resolve some of the problems that remain with the base > package: > > > The problem: > > Users can not update their version of the 'base' package, since it is tied > to Ghc. If a useful new function is added using it requires updating the > compiler. On the one hand this puts people off using these new functions. On > the other hand it also makes updates to for instance Data.List take way > longer to reach the users because we have to wait for the next Ghc release. > > > The proposal: > > User code should NEVER import the library that is now called 'base', it > should provide an internal API only. For example, base can include the > modules > Internal.Data.List > Internal.Control.Monad > Internal.IO > etc. > Which are as minimal and low level as possible, containing just the things > that Ghc RELIES on like: > > - type classes for which instances can be derived (Eq, Ord, etc.) > - data types and classes with syntactic sugar (Bool, [], Num, Monad) > - low level stuff like IO and ST and primitives > > In short, everything that is now under Ghc.*, and hopefully less, becomes > the new base library. In my opinion half of that can still be moved out, > like most of Ghc.List, Ghc.Enum, Ghc.IO and Ghc.Read. > > The next layer can then consist of many packages like "containers", > "control", "numeric", "concurrent", "ioref", "file-io", "foreign", etc. For > example the Data.List module imports Internal.Data.List for the basic list > data type. It re-exports this, and adds many additional functions that don't > belong in the minimal base library. > > > > Thoughts? > > > Twan > _______________________________________________ > Libraries mailing list > Libraries <at> haskell.org > http://www.haskell.org/mailman/listinfo/libraries >
RSS Feed