[Haskell-cafe] parametrized data types and Template Haskell
Maarten Faddegon
haskell-cafe at maartenfaddegon.nl
Thu Dec 26 11:36:03 UTC 2013
Dear Cafe,
Hope you all had a nice Christmas.
I have been playing with generating method instances using Template
Haskell but am a bit stuck now trying to generate an instance for a
parametrized data type.
I would like to generate the following:
> instance (MyClass a) => MyClass (Tree a) where
> mymethod _ = "todo"
I defined a genMyClassInstance that is working fine for unparametrized
data types, but clearly there is nothing here that inserts the '(MyClass
a) =>' part here. My first question is: how should I instruct Template
Haskell to insert the beforementioned code when appropriate?
> genMyClassInstance :: Name -> Q [Dec]
> genMyClassInstance name
> = [d|instance MyClass $(conT name) where
> mymethod _ = "todo"
> |]
My second question is how to pass the Name of a parametrized data type?
I tried the following, but GHC does not seem to like that: "Not in
scope: type constructor or class `Tree a' Perhaps you meant `Tree'"
> $(genMyInstance (mkName "Tree a"))
Thank you!
Maarten Faddegon
More information about the Haskell-Cafe
mailing list