Re: [GHC] #7066: isInstance does not work for compound types

#7066: isInstance does not work for compound types -------------------------------------+------------------------------------ Reporter: edsko | Owner: simonpj Type: bug | Status: new Priority: normal | Milestone: 7.8.3 Component: Template Haskell | Version: 7.4.2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: None/Unknown | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------ Comment (by simonpj): Hmm: * Are you making the case for an actual change in the behaviour of the current TH operations? The current `reifyInstances` is deliberately primitive (a one-level lookup) so that other stuff can be built on top. Or are you asking for some new functions in the `Quasi` monad; or new functions in the `template-haskell` library? * It would help a lot to be clear precisely what the behaviour is supposed to be when the types concerned contain type variables. Currently `reifyInstances` returns all the instance whose heads unify with the specified constraint. I've looked at your code and it's not clear to me exactly what it does. Could you write a specification? * I think it's arguable that what you ''really'' want is something like {{{ isInstance :: Cxt -> Name -> [Type] -> Q Bool }}} return `True` if the constraint `(C tys)` is provable from the specifed context. For example, you could ask, say `isIntance [Show a, Num a] Foo [Maybe a]`, to ask whether you can prove `(Foo (Maybe a))` from `(Show a, Num a)`. For ground types you could give the empty `Cxt`. Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/7066#comment:10 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC