<div dir="ltr">I like number option number two. I don't really expect any of the TypeInType stuff to work with the deriving machinery. I think that, at the moment, for a normal deriving clause, GHC never adds in constraints (I might be wrong on this). Whenever constraints, I feel like StandaloneDeriving is the right choice. I don't know if StandaloneDeriving works with DeriveFunctor or not, but if it does, then this is what I would expect:<div><br></div><div>    REJECTED</div><div>    data Proxy k (a :: k) = P</div><div>      deriving Functor</div><div><br></div><div>    ACCEPTED</div><div>    data Proxy k (a :: k) = P</div><div>    deriving instance (k ~ *) => Functor Proxy k</div><div><br></div><div>But if the second code snippet involving StandaloneDeriving can't be made to work, I would still prefer for the first snippet to be rejected as well. Just my two cents.</div><div><br></div><div>-Andrew Thaddeus Martin</div><div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Mar 28, 2016 at 8:55 AM, Richard Eisenberg <span dir="ltr"><<a href="mailto:eir@cis.upenn.edu" target="_blank">eir@cis.upenn.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi devs,<br>
<br>
Consider the following:<br>
<br>
> data Proxy k (a :: k) = P<br>
>   deriving Functor<br>
<br>
What should happen when this is compiled?<br>
 1. Issue an error saying that `deriving` cannot instantiate visible parameters.<br>
 2. Type error: cannot match `k` with `*`.<br>
 3. Successfully produce `instance (Proxy *)`.<br>
<br>
Currently, GHC does #3. But this ends up choosing a value for a visible (i.e. explicit) parameter to Proxy. Is this a good idea? I myself have flip-flopped on this issue; see <a href="https://ghc.haskell.org/trac/ghc/ticket/11732" rel="noreferrer" target="_blank">https://ghc.haskell.org/trac/ghc/ticket/11732</a>, comments 4 and 9.<br>
<br>
I'd love to get feedback on this point.<br>
<br>
Thanks!<br>
Richard<br>
_______________________________________________<br>
ghc-devs mailing list<br>
<a href="mailto:ghc-devs@haskell.org">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>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">-Andrew Thaddeus Martin</div>
</div></div></div>