
OK. That was probably the most complete answer ever.
Under what license are you releasing DataEx.hs? I'm wondering if I may
use it in my package (under BSD3 license) until something like it is
included in SYB.
Pedro: How are extensions to SYB handled? code.google only seems to
handle issues - not tickets.
-- Oscar
On Wed, May 26, 2010 at 8:31 AM,
The only, non-fatal, problem is _not_ with writing the instance of gunfold. Defining gunfold is easy. The problem is that the existing SYB -- or, the module Data/Data.hs to be precise -- has non-extensible constructor and datatype descriptions (Constr and DataType). The problem is not fatal and can be worked around in various inelegant ways. Alternatively, one can fix the problem once and for all by making DataType and Constr extensible -- along the lines of the new Exceptions. The following file
http://okmij.org/ftp/Haskell/DataEx.hs
demonstrates one such fix. The file DataEx.hs also tries to avoid the overlap with Data.Typeable. (One doesn't need to carry the name of the datatype's type constructor in DataType. That name can be obtained from the result of typeOf). The file DataEx can be used alongside the original Data.hs. The code below uses DataEx in that way, to complement Data.hs. The hope is that the maintainers of SYB might choose to extend Data.hs -- perhaps using some bits or ideas from DataEx.hs.