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
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to