Thanks for your reply, in particular the reference to subsT!
I will work more on this next monday, and report my progress

Cheers!


2012/4/13 Michael Sloan <[email protected]>

> Hello!
>
> 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:
>
> http://hackage.haskell.org/packages/archive/haskell-src-meta/0.5.1.2/doc/html/Language-Haskell-Meta-Utils.html#v: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.
>
> -Michael Sloan
>
> On Fri, Apr 13, 2012 at 11:37 AM, Ismael Figueroa Palet
> <[email protected]> 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.
> >
> > Thanks!
> > --
> > Ismael
> >
> >
> > _______________________________________________
> > Haskell-Cafe mailing list
> > [email protected]
> > http://www.haskell.org/mailman/listinfo/haskell-cafe
> >
>



-- 
Ismael
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to