[Haskell-cafe] TH instance code.
Andy Stewart
lazycat.manatee at gmail.com
Tue Jun 22 17:13:26 EDT 2010
Hi Edward,
Thank you very much, your code works perfect!
-- Andy
Edward Kmett <ekmett at gmail.com> writes:
> 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 <lazycat.manatee at gmail.com> 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 at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
More information about the Haskell-Cafe
mailing list