[project @ 2005-01-19 22:33:32 by ralf]
authorralf <unknown>
Wed, 19 Jan 2005 22:33:36 +0000 (22:33 +0000)
committerralf <unknown>
Wed, 19 Jan 2005 22:33:36 +0000 (22:33 +0000)
commit0d6c1599c246100deb2fa54315811ed94d1a300c
tree5da065981a5ee9cf1abd4a955c0990babfaf9124
parentb72cb4f4e104ab0c64feb46ca4d3d8187c90dd28
[project @ 2005-01-19 22:33:32 by ralf]
Added quite a few more Data instances.

For these datatypes:

- Data.Array
- Data.FiniteMap
- Data.IntMap
- Data.IntSet
- Data.Map
- Data.Set
- GHC.ST
- GHC.ForeignPtr
- Control.Concurrent.MVar and friends

(In some cases, this also required adding Typeable instances.)

Most or all additions have been tagged by
#ifdef __GLASGOW_HASKELL__ ...

For the _abstract_ datatypes in the above list,
we use the from... and to... projections and injections
so that we can process the containers or whatever as lists.
We don't provide the reflection API for abstract datatypes.

If anyone sees Data-wanting datatypes in the base or elsewhere
in the module space, please let me know, or please go ahead,
and add coverage for SYB. As far as I understand, the base
code cannot use "deriving (Typeable, Data)", whereas this
is very well an option for non-base modules. Indeed it is
readily done like this in:
- network/Network/URI
- haskell-src
Data/Array.hs
Data/FiniteMap.hs
Data/Generics/Instances.hs
Data/IntMap.hs
Data/IntSet.hs
Data/Map.hs
Data/Set.hs
Data/Typeable.hs
GHC/Conc.lhs
GHC/ForeignPtr.hs