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