<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:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@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;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 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;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
tt
        {mso-style-priority:99;
        font-family:"Courier New";}
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.apple-converted-space
        {mso-style-name:apple-converted-space;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;}
span.EmailStyle24
        {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-size:10.0pt;}
@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"> 1. Hold off on Constraint v Type until after the branch is cut.<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif">Good idea.  I think that’d be OK.  It’s no worse than the status quo.  I’m MUCH more keen to get the TypeRep stuff in, because it has been in the works for nearly two years!!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-family:"Calibri",sans-serif">So let’s do 1-3 pronto.    </span></b><span style="font-family:"Calibri",sans-serif">Who is acting there.  Just Ben?  Or are there bits Richard needs to help with?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif"><br>
As to 4 onwards I still want to talk to you about roles.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif"><br>
Simon<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif"><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"> Richard Eisenberg [mailto:rae@cs.brynmawr.edu]
<br>
<b>Sent:</b> 01 February 2017 01:19<br>
<b>To:</b> Simon Peyton Jones <simonpj@microsoft.com><br>
<b>Cc:</b> ghc-devs@haskell.org<br>
<b>Subject:</b> Re: D2038: [WIP] TysPrim: Generalize kind of (->)<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">I had another thought on my drive home: why do we need to sort out Constraint v Type for 8.2? I have the patch, and it's essentially all set. But it weakens equality in a way that's troublesome for D2038 and introduces heterogeneous axioms,
 which are strange, ill-understood beasts. And I don't think we need it.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">On the other hand, D2038 is essential for the new Typeable, because it's the only way we can give (->) a proper kind.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">So, I propose:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> 1. Hold off on Constraint v Type until after the branch is cut.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> 2. Do what we can to mitigate Constraint v Type confusion vis-a-vis Typeable. (For example, make sure that there aren't Typeable instances for both, and have TcTypeable provide the Type instance whenever the Constraint instance is requested.)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> 3. Advertise that GHC will be a little confused on this point, and that, as far as Typeable is concerned, Constraint and Type are synonymous.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> 4. On the Constraint v Type patch, restore the full power of KindCo. This makes the type system broken, but I don't think the sky will come crashing down.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> 5. Merge Constraint v Type after the branch is cut. This will make GHC HEAD unsound in a new way, but no one will notice unless they try.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> 6. File a priority-highest bug to eliminate newtype-classes (which beget heterogeneous axioms in the Constraint/=Type world).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> 7. Finish the first-class reification design and implement before 8.4.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> 8. Remove newtype-classes, thus eliminating heterogeneous axioms and the unsoundness mentioned in (5).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">This route seems, to me, far preferable to monkeying around with roles and such in ways that we have no assurances are sound. (Remember, roles are there to keep the type system safe and sound. They were not added simply to annoy everyone,
 though they accomplish that goal quite nicely.)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">What do we think? It's not ideal, but I think it's the best of suboptimal alternatives. And it's no worse than 8.0 w.r.t. Constraint v Type.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Richard<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">On Jan 31, 2017, at 5:56 PM, Richard Eisenberg <<a href="mailto:rae@cs.brynmawr.edu">rae@cs.brynmawr.edu</a>> wrote:<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif"><br>
On Jan 31, 2017, at 5:41 PM, Simon Peyton Jones <<a href="mailto:simonpj@microsoft.com">simonpj@microsoft.com</a>> wrote:<o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">But that can only happen if `(->)` has suitable roles.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">What if it doesn’t?</span><o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif">The “correct” roles for (->) of the kind you gave is `nominal nominal nominal nominal representational representational`. That is, the dependent arguments are nominal, and
 the others are representational. This is because all kind-level coercions are nominal. You seem to be suggesting giving (->) different roles. I honestly don’t know what that would mean -- normally, GHC prevents you from specifying a weaker role than it would
 infer. It smells pretty foul to me, but I can’t quite put my finger on what would go wrong at the moment.<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif"><br>
<br>
<o:p></o:p></span></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">What if we just had an axiom</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span><o:p></o:p></p>
</div>
<div style="margin-left:36.0pt">
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">axArrow v ::    (->) Vanilla    v<o:p></o:p></span></p>
</div>
<div style="margin-left:36.0pt">
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">             ~R (->) Constraint v<o:p></o:p></span></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif">I think we’d also need one for results... but maybe not.<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif"><br>
<br>
<o:p></o:p></span></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">or something like that.   Then we get</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span><o:p></o:p></p>
</div>
<div style="margin-left:36.0pt">
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">[W] g :    (->) Vanilla    Vanilla Ptr Ptr (C a) Int<o:p></o:p></span></p>
</div>
<div style="margin-left:36.0pt">
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">        ~R (->) Constraint Vanilla Ptr Ptr a     Int<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">We decompose partly and solve thus</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span><o:p></o:p></p>
</div>
<div style="margin-left:36.0pt">
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">g = (axArrow Vanilla) <Ptr> <Ptr> axC <Int><o:p></o:p></span></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif">And this works only if we weaken (->)’s roles.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif">This whole road just feels like the wrong way, as soon as we started contemplating a heterogeneous axiom, which are ruled out in the literature, even when we have kind equalities.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif">I think the Right Answer is to get rid of newtype-classes & fix reify, and I’m worried that anything short of that will fail catastrophically at some point. Otherwise, it’s
 patches on top of patches.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif">I don’t think there is disagreement here, but there is the question about what to do for 8.2.... and unless we’re ready to roll out the new reify, I think the best course
 of action is to delay the new Typeable and all this Constraint v Type stuff until 8.4. (The new levity polymorphism stuff already committed is hunky-dory.)<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif">Richard<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif"><br>
<br>
<o:p></o:p></span></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Simon</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><a name="_MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span></a><span style="mso-bookmark:_MailEndCompose"></span><o:p></o:p></p>
</div>
<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">
<div>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span class="apple-converted-space"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span></span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"><a href="mailto:noreply@phabricator.haskell.org"><span style="color:purple">noreply@phabricator.haskell.org</span></a><span class="apple-converted-space"> </span>[<a href="mailto:noreply@phabricator.haskell.org"><span style="color:purple">mailto:noreply@phabricator.haskell.org</span></a>]<span class="apple-converted-space"> </span><br>
<b>Sent:</b><span class="apple-converted-space"> </span>31 January 2017 12:51<br>
<b>To:</b><span class="apple-converted-space"> </span>Simon Peyton Jones <<a href="mailto:simonpj@microsoft.com"><span style="color:purple">simonpj@microsoft.com</span></a>><br>
<b>Subject:</b><span class="apple-converted-space"> </span>[Differential] [Commented On] D2038: [WIP] TysPrim: Generalize kind of (->)</span><o:p></o:p></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<table class="MsoNormalTable" border="0" cellspacing="5" cellpadding="0">
<tbody>
<tr>
<td style="padding:.75pt .75pt .75pt .75pt">
<p class="MsoNormal" style="margin-bottom:6.0pt">goldfire added a comment.<span class="apple-converted-space"> </span><o:p></o:p></p>
<div>
<p class="MsoNormal"><a href="https://phabricator.haskell.org/D2038"><b><span style="color:#464C5C;background:#F7F7F9;text-decoration:none">View Revision</span></b></a><o:p></o:p></p>
</div>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="margin-bottom:6.0pt"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif"> </span><o:p></o:p></p>
<div>
<div>
<blockquote style="border:none;border-left:solid #8C98B8 2.25pt;padding:0cm 0cm 0cm 9.0pt;margin-left:0cm;margin-top:3.0pt;margin-right:0cm;margin-bottom:9.0pt">
<div>
<p class="MsoNormal" style="margin-bottom:6.0pt;background:#F8F9FC"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif;color:#6B748C">In<span class="apple-converted-space"> </span><a href="https://phabricator.haskell.org/D2038#89360"><b><span style="color:purple;border:none windowtext 1.0pt;padding:0cm;background:#E7E7E7;text-decoration:none">D2038#89360</span></b></a>,<span class="apple-converted-space"> </span><a href="https://phabricator.haskell.org/p/simonpj/"><b><span style="color:#19558D;border:none windowtext 1.0pt;padding:0cm;background:#F1F7FF">@simonpj</span></b></a><span class="apple-converted-space"> </span>wrote:</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F8F9FC">
<i><span style="color:#6B748C">To avoid being able to extract<span class="apple-converted-space"> </span></span></i><tt><i><span style="font-size:10.0pt;color:#6B748C;background:#EBEBEB">ContraintRep ~R LiftedPtrRep</span></i></tt><span class="apple-converted-space"><i><span style="color:#6B748C"> </span></i></span><i><span style="color:#6B748C">we
 decided to weaken one of the coercion constructors, the one that gets a kind coercion from a type coercion. We don't need it, and it's awkward here.</span></i><o:p></o:p></p>
</div>
</blockquote>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">The problem is that we need it with this patch. I was able to weaken this coercion constructor (<tt><span style="font-size:10.0pt;background:#EBEBEB">KindCo</span></tt>) in my patch<a href="https://phabricator.haskell.org/D3023"><b><span style="color:purple;border:none windowtext 1.0pt;padding:0cm;background:#E7E7E7;text-decoration:none">D3023</span></b></a>,
 but this patch uses it in a fundamental way that we can't get around. To wit:<o:p></o:p></p>
<div style="margin-top:9.0pt;margin-bottom:9.0pt">
<pre style="line-height:11.25pt"><span style="font-size:8.5pt;font-family:Consolas">class C a where</span><o:p></o:p></pre>
<pre style="line-height:11.25pt"><span style="font-size:8.5pt;font-family:Consolas">  meth :: a</span><o:p></o:p></pre>
<pre style="line-height:11.25pt"><span style="font-size:8.5pt;font-family:Consolas"> </span><o:p></o:p></pre>
<pre style="line-height:11.25pt"><span style="font-size:8.5pt;font-family:Consolas">axC :: (C a :: Constraint) ~R (a :: Type)</span><o:p></o:p></pre>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Now, we wish to cast<span class="apple-converted-space"> </span><tt><span style="font-size:10.0pt;background:#EBEBEB">C a -> a</span></tt><span class="apple-converted-space"> </span>to<span class="apple-converted-space"> </span><tt><span style="font-size:10.0pt;background:#EBEBEB">a
 -> a.</span></tt>. This cast will look like<span class="apple-converted-space"> </span><tt><span style="font-size:10.0pt;background:#EBEBEB">(->) ?? <LiftedRep> axC <a></span></tt>. What goes in the<tt><span style="font-size:10.0pt;background:#EBEBEB">??</span></tt>?
 It's got to be something involving<span class="apple-converted-space"> </span><tt><span style="font-size:10.0pt;background:#EBEBEB">KindCo axC</span></tt>, which is disallowed as per our earlier decision. Therein lies the problem.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">As for<span class="apple-converted-space"> </span><tt><span style="font-size:10.0pt;background:#EBEBEB">reify</span></tt>: Yes, I'm agreed with that email. But is that implemented
 yet? Is a design settled on? I don't see a ghc-proposal. Are we wiling to take a dependency on that work in order to get this done?<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">To be clear, my chief worry isn't that these problems cannot be solved by any means -- I'm just worried about the timing of this all and our desire to get 8.2 out the door.<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif"> </span><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><strong><span style="font-size:10.0pt;font-family:"Calibri",sans-serif">REPOSITORY</span></strong><o:p></o:p></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif">rGHC Glasgow Haskell Compiler</span><o:p></o:p></p>
</div>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif"> </span><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><strong><span style="font-size:10.0pt;font-family:"Calibri",sans-serif">REVISION DETAIL</span></strong><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif"><a href="https://phabricator.haskell.org/D2038"><span style="color:purple">https://phabricator.haskell.org/D2038</span></a></span><o:p></o:p></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif"> </span><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><strong><span style="font-size:10.0pt;font-family:"Calibri",sans-serif">EMAIL PREFERENCES</span></strong><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif"><a href="https://phabricator.haskell.org/settings/panel/emailpreferences/"><span style="color:purple">https://phabricator.haskell.org/settings/panel/emailpreferences/</span></a></span><o:p></o:p></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif"> </span><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><strong><span style="font-size:10.0pt;font-family:"Calibri",sans-serif">To:</span></strong><span class="apple-converted-space"><b><span style="font-size:10.0pt;font-family:"Calibri",sans-serif"> </span></b></span><span style="font-size:10.0pt;font-family:"Calibri",sans-serif">bgamari,
 goldfire, austin<br>
<strong><span style="font-family:"Calibri",sans-serif">Cc:</span></strong><span class="apple-converted-space"><b> </b></span>simonpj, RyanGlScott, thomie</span><o:p></o:p></p>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif"><br>
_______________________________________________<br>
ghc-devs mailing list<br>
</span><a href="mailto:ghc-devs@haskell.org"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif">ghc-devs@haskell.org</span></a><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif"><br>
</span><a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-devs&data=02%7C01%7Csimonpj%40microsoft.com%7Cc12ab76d325e4aa0cde508d44a40542a%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636215087550191649&sdata=rvOH21xQNco4LLYDg36DkhhPTmpXzQqhEfHKPb%2BqPj8%3D&reserved=0"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</span></a><o:p></o:p></p>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>