Hi, thanks for all the great feedback.
> Your GADT encodes an existential datatype. The closest attempt to encode > existential types in (something like) SYB that I know of is in Section 5.3 of > Alexey's PhD thesis [1]. Having said that, he uses the spine view, which > makes the generic view in SYB explicit, but this has never been packaged as a > library. So I'm afraid the answer is "no". The link above might still be > useful for your understanding of why this is a complex problem, though. Interesting paper by Alexey. Especially p. 106. > Have you tried using StandaloneDeriving (and DeriveDataTypeable)? Thanks for the tip. Didn't know about this feature before but unfortunately it didn't help me. Standalone deriving gave the same error message so I guess it generates similar code to what I wrote. > forall d. gunfold k z c = k (z (DataBox::d->DataBox d)) Didn't work either. :( > Also why isn't the paramater c used? I guess c says which constructor is used, but since I know which constructor is used (since DataBox only got one) the variable is discarded. > However, I remember the solution: I created a function to convert the GADT > into another, unGADT type, Is this possible for existential data types too? I tried to convert DataBox to a data type "DataBox' a" but I couldn't get it to compile. Are there any libraries for generics/reflection that can handle existential data types? EMGM/multirec/? Until I manage to figure this out I'll go with the technique described in http://okmij.org/ftp/Computation/Existentials.html where instead of exposing a function > decodeUnknownXML :: String -> Maybe DataBox the package expose a function > decodeUnknownXML :: Data a => String -> (a -> b) -> Maybe b -- Oscar 2010/5/16 José Pedro Magalhães <[email protected]> > > Hi Oscar, > > On Sat, May 15, 2010 at 22:19, Oscar Finnsson <[email protected]> > wrote: >> >> (...) >> >> I guess my questions are: >> >> 1. Is it possible to combine GADTs with Scrap your Boilerplate? > > Your GADT encodes an existential datatype. The closest attempt to encode > existential types in (something like) SYB that I know of is in Section 5.3 of > Alexey's PhD thesis [1]. Having said that, he uses the spine view, which > makes the generic view in SYB explicit, but this has never been packaged as a > library. So I'm afraid the answer is "no". The link above might still be > useful for your understanding of why this is a complex problem, though. > > > Cheers, > Pedro > > [1] > http://igitur-archive.library.uu.nl/dissertations/2009-0518-200422/UUindex.html > > _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
