<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.Code, li.Code, div.Code
        {mso-style-name:Code;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:9.0pt;
        font-family:"Courier New";}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
.MsoPapDefault
        {mso-style-type:export-only;
        margin-top:6.0pt;
        margin-right:0cm;
        margin-bottom:6.0pt;
        margin-left:0cm;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-fareast-language:EN-US">Fine with me!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-fareast-language:EN-US">Simon<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> ghc-devs [mailto:ghc-devs-bounces@haskell.org]
<b>On Behalf Of </b>Ryan Scott<br>
<b>Sent:</b> 28 September 2016 00:13<br>
<b>To:</b> GHC developers <ghc-devs@haskell.org><br>
<b>Subject:</b> Re: Request for feedback: deriving strategies syntax<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm">
Sorry to keep changing my mind on this topic, but I'd like to make one last alternate suggestion, which I think surpasses all the previous ones. Joachim proposed that what was called "bespoke", "standard", or "builtin" in the past be called "stock" instead
 [1]. I like this idea since:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:6.0pt;margin-left:0cm">
1. "Stock" is a short, instantly recognizable English word, no matter where you live (I think).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:6.0pt;margin-left:0cm">
2. It conveys the right meaning, as "stock" indicates something straightforward or normal (in contrast to GND and DAC, which do something a bit more novel). "Stock" has other meanings, but in this context I believe it's clear what it indicates.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm">
3. It doesn't have the disadvantages of the other suggestions. Besides the points already covered, Joachim noted that "bespoke" has connotations of giving instances that would be tailor-fit for a datatype (e.g., "ignore field x in the Eq instance, because it
 is just a cached value that depends on the other"), when in reality, the strategy is far more mechanical than that!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:6.0pt;margin-left:0cm">
Thoughts?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:6.0pt;margin-left:0cm">
<o:p> </o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:6.0pt;margin-left:0cm">
Ryan S.<br>
-----<br>
[1] <a href="https://ghc.haskell.org/trac/ghc/ticket/10598?replyto=50#comment:50">
https://ghc.haskell.org/trac/ghc/ticket/10598?replyto=50#comment:50</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:6.0pt;margin-left:0cm">
<o:p> </o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:6.0pt;margin-left:0cm">
On Fri, Aug 26, 2016 at 4:49 AM, Ryan Scott <<a href="mailto:ryan.gl.scott@gmail.com" target="_blank">ryan.gl.scott@gmail.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal" style="mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:6.0pt;margin-left:0cm">
Hello, everyone! Sorry for not being able to respond to some of the<br>
recent feedback.<br>
<br>
Well, it seems I'm at a bit of an impasse again. I originally changed<br>
"builtin" to "bespoke" because enough GHC devs voiced their<br>
displeasure (ranging from moderate to severe) with "builtin". I hoped<br>
that choosing "bespoke" would strike a happy medium where we could<br>
have a term that (1) reasonably describes its intended purpose, (2)<br>
wouldn't be highly misleading upon an initial glance, and (3) wouldn't<br>
be too off-putting to use as a reserved keyword.<br>
<br>
Unfortunately, I over-estimated how well "bespoke" meets criterion 3,<br>
since several people have _also_ voiced their displeasure with it!<br>
(Again, ranging from moderate to severe.) So we're back to square one,<br>
it seems. I don't want to push this patch without a general feeling of<br>
community consensus, but the patch is complete after all, with the<br>
exception of bikeshedding, so I'd like to try and come up with a<br>
colo(u)r that folks will be happy with so we can proceed and I can<br>
work on other things that need this feature.<br>
<br>
So, instead of "builtin" and "bespoke", I propose reconsidering an<br>
earlier suggestion of Elliot Cameron's: "standard". I had previously<br>
expressed reservations about "standard" before, since I felt it might<br>
be miscontrued as meaning "a Haskell standard" (e.g., the Haskell<br>
Report). But upon further thought, I have actually come to like the<br>
word "standard". Here's why:<br>
<br>
1. It's simple. "Standard" is recognizable whether you speak American<br>
English, British English, or pretty much any other variant that I'm<br>
aware of.<br>
2. It has precedent. A GHC error message already uses the phrase<br>
"standard derivable classes" to refer to Eq, Ord, Functor, etc. If we<br>
adopt "standard" as our keyword, then we could endow this phrase with<br>
a more precise meaning.<br>
3. It reflects history. This deriving strategy (that I'm proposing to<br>
name "standard") was the very first deriving strategy that GHC<br>
supported (to my knowledge), so it makes sense to refer to this<br>
strategy as the "standard" one, since all other strategies were added<br>
later.<br>
4. It's not too ambiguous. As opposed to say, "default" (which could<br>
be confused with -XDefaultSignatures, i.e., the anyclass strategy), I<br>
think that "standard" has a pretty obvious connotation in the context<br>
of deriving. There is the possibility of misinterpreting "standard" to<br>
refer to the Haskell Report, but that wouldn't be the worst<br>
misconception in the world to make, since several "standard derivable<br>
classes" are actually in the Haskell Report (whereas neither<br>
GeneralizedNewtypeDeriving nor DeriveAnyClass are).<br>
<br>
What does everyone think?<br>
<br>
Ryan S.<o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:6.0pt;margin-left:0cm">
<o:p> </o:p></p>
</div>
</div>
</div>
</body>
</html>