This is a bit similar to Either. Is there a way to see the generated instance code for deriving instance Data Either ?
On Thu, Jul 10, 2008 at 6:38 PM, Ron Alford <[EMAIL PROTECTED]> wrote: > Close - it compiles now! I made a minor change, going to Typeable1 > instead of Typeable: > > instance (Typeable1 f, Typeable1 g) => Typeable1 (f :+: g) where > typeOf1 l@(Inl x) = mkTyConApp (mkTyCon "Planning.Wouter.:+:") > [typeOf1 x, typeOf1 y] > where (Inr y) = undefined `asTypeOf` l > typeOf1 r@(Inr y) = mkTyConApp (mkTyCon "Planning.Wouter.:+:") > [typeOf1 x, typeOf1 y] > where (Inl x) = undefined `asTypeOf` r > > Except this gives me a runtime error: > *WouterTest> getName testNamed > "*** Exception: Prelude.undefined > > The only thing I can think of is to have a class that gives default > values to type - ick! > > -Ron Alford > > On Thu, Jul 10, 2008 at 4:16 PM, Antoine Latter <[EMAIL PROTECTED]> wrote: >> On Thu, Jul 10, 2008 at 2:15 PM, Ron Alford <[EMAIL PROTECTED]> wrote: >>> I'm making progress, but how would I make the following a Typeable instance: >>> data (f :+: g) e = Inl (f e) | Inr (g e) deriving Eq >>> >>> Here is what I'm using for Expr: >>> data Expr f = In (f (Expr f)) >>> instance Typeable1 f => Typeable (Expr f) where >>> typeOf (In x) = mkTyConApp (mkTyCon "Data.Trie.General.ListGT") [typeOf1 >>> x] >>> >>> I don't think I can use this for ':+:', because the typeOf instance >>> only has access to a member of one type at a time. >>> This may be similar to a definition of Typeable2 for Either, but I >>> can't find an example to follow for that. >>> >> >> Maybe something like: >> >> instance (Typeable1 f, Typeable1 g) => Typeable (f :+: g) where >> typeOf in@(InL f) = (some function of 'f' and 'g') >> where InR g = undefined `asTypeOf` in >> >> typeOf in@(InR g) = (some function of 'f' and 'g') >> where InL f = undefined `asTypeOf` in >> >> would work? >> >> -Antoine >> > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe