The base library and GHC 6.10
Claus Reinke
claus.reinke at talk21.com
Sun Aug 31 18:02:59 EDT 2008
Leaving Data.Generics.Basics in base while moving
Data.Generics.Instances to syb raises the interesting issue of
dealing with the accidental re-exports of Data.Generics.Instances
from various places. Here is that list again (*):
$ find . -name '*hs' | grep -v _darcs | xargs grep -l 'Data.Generics' | grep -v Generics
./array/Data/Array.hs
./base/Data/Typeable.hs
./bytestring/Data/ByteString/Internal.hs
./bytestring/Data/ByteString/Lazy/Internal.hs
./bytestring/Data/ByteString/Unsafe.hs
./containers/Data/IntMap.hs
./containers/Data/IntSet.hs
./containers/Data/Map.hs
./containers/Data/Sequence.hs
./containers/Data/Set.hs
./containers/Data/Tree.hs
./haskell-src/Language/Haskell/Syntax.hs
./network/Network/URI.hs
./packedstring/Data/PackedString.hs
./template-haskell/Language/Haskell/TH/Quote.hs
./template-haskell/Language/Haskell/TH/Syntax.hs
And here is a brief scan of what each of these is doing. References
to 'standard' vs 'dubious' Data instances are wrt the suggested split
in [1], with some possible refinements:
- array: the Data instance for Array could be moved into array,
avoiding the need for instance imports and syb dependency?
- bytestring: uses deriving, which for Internal.hs depends on
Data instances for Int [standard] and (ForeignPtr Word8)
[dubious]; would need to depend on syb; and import both
standard and dubious instances :-(
perhaps Data instances for type constructors with phantom
types should be re-classified into Standard, given that there
are no data objects to be traversed?
- containers: IntMap.hs, IntSet.hs, Map.hs, Sequencs.hs, Set.hs,
Tree.hs define their own Data instances, or derive them in such
a way that they do not need to import any instances :-)
- haskell-src: uses deriving, will need to depend on syb; depends
almost exclusively on standard instances (the only exception I
can see in a quick scan is Rational);
perhaps this is an argument in favour of moving the Data instance
for 'Ratio a' from Dubious to Standard: the parameter type is
never meant to be traversed, and tainting every client of 'Ratio a'
with the really bad instances is not a good idea. Opinions?
- network: uses deriving, will need to depend on syb; depends
only on standard instances
- packedstring: defines its own instances, no need to import any
- template-haskell: uses deriving, roughly the same situation as
for haskell-src?
Claus
[1] see the last page of
http://www.haskell.org/pipermail/libraries/2008-July/010313.html
[2] http://www.cs.kent.ac.uk/~cr3/toolbox/haskell/#syb-utils
More information about the Libraries
mailing list