[Haskell-cafe] Template Haskell: Generate annotated function of a typeclass
mgsloan at gmail.com
Fri Apr 13 21:15:48 CEST 2012
It seems like you would want to use "reifyInstances" in order to get
all of the instances associated with a class. Then, you can match up
the variables in each instance with the variables in the class
declaration, and create a mapping from the class variables to the
instance parameters. Then, you can apply these mappings with substT:
The result would also need to have the context of the instance,
perhaps reduced to just the constraints that mention the type
variables used in the selected function.
On Fri, Apr 13, 2012 at 11:37 AM, Ismael Figueroa Palet
<ifigueroap at gmail.com> wrote:
> Hi all, I think this is the right place for the following questions and I
> thank beforehand for your answers :-)
> I'm experimenting with typeclasses and TH, and I want to define a 'macro'
> that works more or less like this:
> Given the name of a typeclass and a function, return the expressions
> corresponding to the type-annotated instances, for instance
> $(foo Show show)
> should translate to:
> ["(show :: Int -> String)", "(show :: Bool -> String)", ....]
> for all instances currently in scope.
> I'm currently playing with the isInstance function (I'm running GHC 7.4.1)
> and can get a list of instances, and check if a given type is part of a
> typeclass or not. But I don't know how to create the expression
> corresponding to "instantiated function", as above.
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
More information about the Haskell-Cafe