<div dir="ltr"><div>Ah, the result produced by !4149 does indeed look good. Thanks!</div><div><br></div><div>Jakob<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Nov 23, 2020 at 4:54 AM Richard Eisenberg <<a href="mailto:rae@richarde.dev">rae@richarde.dev</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
> On Nov 21, 2020, at 10:38 PM, Jakob Brünker <<a href="mailto:jakob.bruenker@gmail.com" target="_blank">jakob.bruenker@gmail.com</a>> wrote:<br>
> <br>
> Three questions:<br>
>  - Is there already a way to do this that I'm missing?<br>
<br>
Not that I'm aware of. GHC sometimes expands type families and sometimes doesn't. The general philosophy has been that expanding type families is usually good and expanding type synonyms is usually bad. But it wouldn't surprise me in the slightest if GHC is inconsistent about this.<br>
<br>
>  - Are there reasons for why this would be a bad idea?<br>
<br>
If we did it unconditionally, I imagine some error messages would get worse. Adding a new flag would make the interface to GHC more complex, but perhaps it's worth it.<br>
<br>
>  - Would a proposal be necessary for this?<br>
<br>
For me, it would depend on the invasiveness of the change; however, making type families expand is already what we try to do, so probably not.<br>
<br>
But before blazing ahead, you may want to know that my !4149 already prints what you want. Testing your example yields<br>
<br>
Scratch.hs:32:52: error:<br>
    • Couldn't match kind ‘()’ with ‘Maybe String’<br>
      Expected kind ‘Maybe (Foo Int)’, but ‘'()’ has kind ‘()’<br>
    • In the type ‘'()’<br>
      In the type family declaration for ‘Bar’<br>
<br>
which I imagine is acceptable.<br>
<br>
Richard<br>
<br>
<br>
<br>
> <br>
> Thanks,<br>
> Jakob<br>
> _______________________________________________<br>
> ghc-devs mailing list<br>
> <a href="mailto:ghc-devs@haskell.org" target="_blank">ghc-devs@haskell.org</a><br>
> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
<br>
</blockquote></div>