[Haskell-cafe] Re: Combining Wouter's expressions with extensible
records
Antoine Latter
aslatter at gmail.com
Thu Jul 10 16:16:33 EDT 2008
On Thu, Jul 10, 2008 at 2:15 PM, Ron Alford <ronwalf at volus.net> 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
More information about the Haskell-Cafe
mailing list