
Bulat Ziganshin wrote:
what is the base library now? is it about data structures, I/O, concurrency or monads? there is no answer - this lib contains everything developed by peoples having accounts at darcs.haskell.org. why it's impossible to use Applicative class with ghc 6.4? because Ross Paterson was so kind to include this in a base lib. why peoples get a problems with their mutable arrays in 6.6? because arrays interface was changed and there is no way to use old lib in 6.6. why ForeignPtrs in 6.4 are slow? because it's a part of base lib and it's impossible to use faster ForeignPtr implementation without upgrading entire compiler. and so on, so on
inflation of base library and inability to upgrade it have cumulative effect. i think that our ultimate goal is a set of ghc-independent concrete libs: arrays, control, files, concurrency... and any step in this direction will simplify upgrading to next ghc version
Chris:
example, it includes 2 of 4 regexp libs? at last end, we can learn that this is the list of libs required to build ghc itself!
Some of the other regex-* libraries are interfaces to c-library backends (pcre and tre) and it is not GHC's place to come with copies of those
I think Bulat has a made very convincing argument here. These problems with upgrading (or downgrading, for compatibility) of base library have bitten me too sometimes. libraries. But
GHC used regex internally, so it must come with at least a single backend.
what means "used internally"? you mean compiler sources? i don't see reasons why each copy of ghc should be able to compile ghc itself
In the improbable case that Haskell compiler has been installed without some basic libraries, I think it would be okay if ghc build would complain that it needs library X or Y. It should say from where these can be downloaded and the installation should be straight forward. Ben