Dear TH users
In Template Haskell, it's not currently possible to say "give me all the
instances of this class"; it's a long-standing feature request.
Sam Anklesaria has come up with a design and implemented it. Before committing
to it, I want to check that other Template Haskell users are happy with the
design.
You can find the details here:
http://hackage.haskell.org/trac/ghc/ticket/1835
But a summary of the design appears below. If you have a stake in Template
Haskell, pls RSVP by adding a comment to the ticket.
Thanks
Simon
================
Proposed design
* Extending the Quasi monad to have
class (Monad m, Functor m) => Quasi m where
...
qReify :: Name -> m Info
qIsClassInstance :: Name -> [Type] -> m Bool
isClassInstance :: Name -> [Type] -> Q Bool
isClassInstance n ts = Q (qIsClassInstance n ts)
* Extending the info you get back when reifying a Class, by adding its
instances:
data Dec = ...
| ClassI Dec [([TyVarBndr],Cxt,[Type])]
Some random thoughts
* In principle, I suppose that isClassInstance isn't really necessary:
you could reify the class and search the list yourself.
But I can see that it's convenient.
* Currently isClassInstance returns True if any instances match,
even if they overlap etc. Might you want to know more?
_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users