<div dir="auto">You *can* do this, but it's often not so concise. When the type constructor has parameters, you need to pin them down using ScopedTypeVariables. So you end up needing to give a signature for the method type in order to bring into scope variables you then use in the argument to coerce. If you have<div dir="auto"><br></div><div dir="auto">newtype Foo f a = Foo (Foo f a)</div><div dir="auto"><br></div><div dir="auto">then you may need</div><div dir="auto"><br></div><div dir="auto">instance Bar f => Bar (Foo f) where</div><div dir="auto">  bah = coerce (bah @ f @ a)</div><div dir="auto">    :: forall a . C a => ...</div><div dir="auto"><br></div><div dir="auto">to pin down the C instance.</div><div dir="auto"><br></div><div dir="auto">If you don't want to use explicit type application (e.g., you're using a library that does not claim to have stable type argument order), things get even more verbose.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Jan 8, 2017 11:32 PM, "Joachim Breitner" <<a href="mailto:mail@joachim-breitner.de">mail@joachim-breitner.de</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
just responding to this one aspect:<br>
<br>
Am Sonntag, den 08.01.2017, 21:16 -0500 schrieb David Feuer:<br>
> but using defaults for<br>
> the others would give poor implementations. To cover this case, I<br>
> think it would be nice to add per-method GND-deriving syntax. This<br>
> could look something like<br>
><br>
> instance C T where<br>
>   deriving f<br>
>   g = ....<br>
<br>
Assuming<br>
  newtype T = MkT S<br>
<br>
You can achieve this using<br>
<br>
  instance C T where<br>
     f = coerce (f @F)<br>
     g = ....<br>
<br>
(which is precisely what GND does), so I don’t think any new syntax is<br>
needed here.<br>
<br>
Greetings,<br>
Joachim<br>
<br>
--<br>
Joachim “nomeata” Breitner<br>
  <a href="mailto:mail@joachim-breitner.de">mail@joachim-breitner.de</a> • <a href="https://www.joachim-breitner.de/" rel="noreferrer" target="_blank">https://www.joachim-breitner.<wbr>de/</a><br>
  XMPP: <a href="mailto:nomeata@joachim-breitner.de">nomeata@joachim-breitner.de</a> • OpenPGP-Key: 0xF0FBF51F<br>
  Debian Developer: <a href="mailto:nomeata@debian.org">nomeata@debian.org</a><br>______________________________<wbr>_________________<br>
Glasgow-haskell-users mailing list<br>
<a href="mailto:Glasgow-haskell-users@haskell.org">Glasgow-haskell-users@haskell.<wbr>org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/glasgow-<wbr>haskell-users</a><br>
<br></blockquote></div></div>