
v-- I had accidentally elided the _'s before the t's in the quasiquotation before. What you're looking for is something like: deriveVariable _t = [d| instance Variable $_t where toVariant = toVariant . show fromVariant x = fmap (\v -> read v :: $_t) $ fromVariant x|] deriveVariable (conT ''PageType) deriveVariable (conT ''Int) deriveVariable (conT ''Maybe `appT` conT ''Char) ...
On Tue, Jun 22, 2010 at 11:24 AM, Andy Stewart
wrote: Hi all,
I have below duplicate code, but i don't know how to use TH instance code.
------------------------------> duplicate code start <------------------------------ instance Variable PageType where toVariant = toVariant . show fromVariant x = fmap (\v -> read v :: PageType) $ fromVariant x
instance Variable Int where toVariant = toVariant . show fromVariant x = fmap (\v -> read v :: Int) $ fromVariant x
instance Variable (Maybe Char) where toVariant = toVariant . show fromVariant x = fmap (\v -> read v :: Maybe Char) $ fromVariant x
instance Variable (Maybe Int) where toVariant = toVariant . show fromVariant x = fmap (\v -> read v :: Maybe Int) $ fromVariant x
instance Variable ProcessID where toVariant = toVariant . show fromVariant x = fmap (\v -> read v :: ProcessID) $ fromVariant x
instance Variable GWindowId where toVariant = toVariant . show fromVariant x = fmap (\v -> read v :: GWindowId) $ fromVariant x ------------------------------> duplicate code end <------------------------------
Any TH expert help?
Thanks,
-- Andy
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe