[GHC] #15147: Type checker plugin receives Wanteds that are not completely unflattened

Nicolas Frisby nicolas.frisby at gmail.com
Mon Jun 11 15:21:08 UTC 2018

That way of saying it clarifies the expectations for me. And doesn't seem
too burdensome for the plugin author.

Thus I think this ticket could be resolved by updating the documentation.
(Though I still would like for a plugin to be able to request the flattened
Wanteds. Separate ticket?)

In particular this sentence in the User Guide

"[The plugin] will be invoked at two points in the constraint solving
process: after simplification of given constraints, and after unflattening
of wanted constraints."

would benefit from some elaboration. Specifically, "unflattening of wanted
constraints" is somewhat ambiguous: until you spelled it out, I was
thinking that if a constraint is flattened, it doesn't have any flattening
variables in it. However, I'm inferring here that the jargon is used to
mean that "unflattening a wanted constraint" only eliminates fmvs, possibly
leaving fsks behind? That's what I've been confused about (until now, I
think). Thanks.

On Tue, Jun 5, 2018, 01:48 GHC <ghc-devs at haskell.org> wrote:

> #15147: Type checker plugin receives Wanteds that are not completely
> unflattened
> -------------------------------------+-------------------------------------
>         Reporter:  nfrisby           |                Owner:  (none)
>             Type:  bug               |               Status:  new
>         Priority:  normal            |            Milestone:  8.6.1
>        Component:  Compiler (Type    |              Version:  8.4.1
>   checker)                           |             Keywords:
>       Resolution:                    |  TypeCheckerPlugins
> Operating System:  Unknown/Multiple  |         Architecture:
>                                      |  Unknown/Multiple
>  Type of failure:  None/Unknown      |            Test Case:
>       Blocked By:                    |             Blocking:
>  Related Tickets:                    |  Differential Rev(s):
>        Wiki Page:                    |
> -------------------------------------+-------------------------------------
> Comment (by simonpj):
>  > Perhaps I'm misunderstanding something
>  I didn't express it very clearly.  As it stands, the Given CFunEqCan's
>  remain, and hence so do the fsks.  The Wanted CFunEqCans are removed
>  (currently) along with the fmvs.
>  So yes, currently Wanteds can contain fsks, whose definition is given by a
>  CFunEqCan.  I would have thought that most plugins would not find it hard
>  to deal with that.
> --
> Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15147#comment:14>
> GHC <http://www.haskell.org/ghc/>
> The Glasgow Haskell Compiler
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20180611/0ef717a7/attachment.html>

More information about the ghc-devs mailing list