<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>> today’s Haddock doesn’t understand Notes. But we could fix
that if we were minded to.<br>
<br>
I may have missed an episode or two here but what prevents us from
writing Notes as Named Chunks¹, write them where Haddock expects
you to put documentation, and refer to them from the relevant spot
in the code?<br>
Viktor (in CC) has done a wonderful work at producing nice layouts
for Haddocks in base, and we could learn a couple of lessons from
his MRs.<br>
</p>
<p>---</p>
<p>Now, on the matter of improving Haddock to understand GHC's
notes, I'd like to remind everyone that Haddock is currently
understaffed in terms of feature development, and I would like to
call to everyone with experience dealing with its codebase to give
a hand in refactoring, dusting off and improving the code so that
its maintainability is not jeopardised by people simply going
elsewhere. <br>
Our bus factor (or as I like to call it, circus factor), is quite
terrifying considering the importance of the tool in our
ecosystem.<br>
<br>
<br>
¹
<a class="moz-txt-link-freetext" href="https://haskell-haddock.readthedocs.io/en/latest/markup.html#named-chunks">https://haskell-haddock.readthedocs.io/en/latest/markup.html#named-chunks</a><br>
<br>
</p>
<div class="moz-cite-prefix">Le 14/09/2021 à 13:56, Simon Peyton
Jones via ghc-devs a écrit :<br>
</div>
<blockquote type="cite"
cite="mid:VI1PR83MB02695FEC9ED49208D5D9F6FAADDA9@VI1PR83MB0269.EURPRD83.prod.outlook.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Generator" content="Microsoft Word 15 (filtered
medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]-->
<style>@font-face
{font-family:Helvetica;
panose-1:2 11 6 4 2 2 2 2 2 4;}@font-face
{font-family:Courier;
panose-1:2 7 4 9 2 2 5 2 4 4;}@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}@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:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}h3
{mso-style-priority:9;
mso-style-link:"Heading 3 Char";
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:13.5pt;
font-family:"Calibri",sans-serif;
font-weight:bold;}a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}p.gmail-m4686577435606355590msolistparagraph, li.gmail-m4686577435606355590msolistparagraph, div.gmail-m4686577435606355590msolistparagraph
{mso-style-name:gmail-m_4686577435606355590msolistparagraph;
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}span.Heading3Char
{mso-style-name:"Heading 3 Char";
mso-style-priority:9;
mso-style-link:"Heading 3";
font-family:"Calibri Light",sans-serif;
color:#1F3763;
mso-fareast-language:EN-GB;}span.EmailStyle22
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}.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;}div.WordSection1
{page:WordSection1;}ol
{margin-bottom:0cm;}ul
{margin-bottom:0cm;}</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]-->
<div class="WordSection1">
<p class="MsoNormal">Alfredo writes (below for full thread)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">That is a
deceptively simple question you ask there :-) I don't have a
strong view myself, but I can offer the perspective of
somebody who was been for a long time on the "other side of
the trenches" (i.e. working Haskell programmer, not
necessarily working GHC programmer):<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">* Blog post:
yes, it's true that is a snapshot, and it's true that is not
under GHC's gitlab umbrella, so I wouldn't treat it as a
reliable source of documentation (for the reasons you also
explain) but it's surely a good testament that "at this point
in time, for this particular GHC commit, things were this
way);<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">* The wiki page:
in the past, when I wanted to learn more about some GHC
feature, Google would point me to the relevant Wiki page on
the GHC repo describing such a feature, but I have to say I
have almost always dismissed it, because everybody knows
Wikis are seldomly up-to-date :) In order for a Wiki page to
work we would have to at least add a banner at the top that
states this can be trusted as a reliable source of
information, and offer in the main section the current,
up-to-date design. We can still offer the historical breakdown
of the designs in later sections, as it's still valuable info
to keep;<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">* GHC notes: I
have always considered GHC notes a double-edge sword -- from
one side they are immensely useful when navigating the source
code, but
<span
style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#1A1A1A">these
won't be rendered in the Hackage's haddocks, and this is not
helpful for GHC-the-library users willing to understand how
to use (or which is the semantic of) a particular type
(sure, one can click "Show Source" on Hackage but it's an
annoying extra step to do just to hunt for notes). W</span>e
already have Notes for this work in strategic places -- even
better, we have proper Haddock comments for things like
"Severity vs DiagnosticReason" , e.g. <a
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.haskell.org%2Fghc%2Fghc%2F-%2Fblob%2Fmaster%2Fcompiler%2FGHC%2FTypes%2FError.hs%23L279&data=04%7C01%7Csimonpj%40microsoft.com%7Cdb46814133bc4404b6d308d9685a487e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637655559255320972%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=WU2dKu2Q%2FFdwntJ2h%2F6zO1Ic01c9o0VhZc5JrE0AurY%3D&reserved=0"
moz-do-not-send="true">
https://gitlab.haskell.org/ghc/ghc/-/blob/master/compiler/GHC/Types/Error.hs#L279</a>
.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#1A1A1A"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Yes
Haddock doesn’t understand Notes but that’s a deficiency in
Haddock! There so much in GHC that simply does not fit well
with the Haddocks attached to a particular data decl or
function. We need Notes to explain how all the moving parts
fit together, and to point to them.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt">Even better, we
have proper Haddock comments for things like "Severity vs
DiagnosticReason"
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">But
I don’t think this is better – I think it is significantly
worse! In the case you cite, the Haddock is about
DiagnosticReason, and mentions Severity only incidentally.
I bet that the Haddock for Severity doesn’t refer to this.
Nor is there a clear “Note [Severity vs DiagnosticReason]”
title that bits of code across GHC can refer to by saying
“See Note [Severity vs DiagnosticReason]”. It’s far less
satisfactory (to me) than a single Note that<o:p></o:p></span></p>
<ul style="margin-top:0cm" type="disc">
<li class="MsoListParagraph"
style="margin-left:2.7pt;mso-list:l0 level1 lfo2"><span
style="mso-fareast-language:EN-US">covers just
<b>one topic</b> (the difference between Severity and
DiagnosticReason, rather than fully describing either<o:p></o:p></span></li>
<li class="MsoListParagraph"
style="margin-left:2.7pt;mso-list:l0 level1 lfo2"><span
style="mso-fareast-language:EN-US">can be
<b>pointed to</b> symmetrically from both Severity and
DiagnosticReason<o:p></o:p></span></li>
<li class="MsoListParagraph"
style="margin-left:2.7pt;mso-list:l0 level1 lfo2"><span
style="mso-fareast-language:EN-US">can be
<b>pointed to</b> by many other bits of code<o:p></o:p></span></li>
</ul>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">The
way it is better is that today’s Haddock doesn’t understand
Notes. But we could fix that if we were minded to.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><br>
Returning to how to document the error-message architecture,
if you’d prefer to use a Note than a wiki page, that’s
fine. But please write that Overview Note that explains all
the pieces, points to them one by one. And then copiously
refer to that Note from all those places, so people will
update it.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><u>Hopefully as
the time goes by the new design will "spread" across all the
different peers working on GHC, and it will become "second
nature".</u><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">I
really don’t think that will happen unless there is a Note
that explains what the new design is! Lacking this explicit
design, everyone will infer their own mental model of how it
all works from sundry scattered clues – and those mental
models will differ. So instead of one thing “spreading” a
dozen subtly different things will spread. And then the
next one, confused by these slightly different clues, will
be even less coherent.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Let’s
have one, fully-explicit version of The Plan that we
constantly refer to.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">cc’ing
ghc-devs because we must constantly question and refine how
we describe and document GHC.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Simon<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt">PS: I am
leaving Microsoft at the end of November 2021, at which
point
<a href="mailto:simonpj@microsoft.com"
moz-do-not-send="true"><span style="color:#0563C1">simonpj@microsoft.com</span></a>
will cease to work. Use
<a href="mailto:simon.peytonjones@gmail.com"
moz-do-not-send="true"><span style="color:#0563C1">simon.peytonjones@gmail.com</span></a>
instead. (For now, it just forwards to
<a class="moz-txt-link-abbreviated" href="mailto:simonpj@microsoft.com">simonpj@microsoft.com</a>.)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="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">From:</span></b><span
lang="EN-US"> Alfredo Di Napoli
<a class="moz-txt-link-rfc2396E" href="mailto:alfredo.dinapoli@gmail.com"><alfredo.dinapoli@gmail.com></a>
<br>
<b>Sent:</b> 26 August 2021 07:25<br>
<b>To:</b> Simon Peyton Jones
<a class="moz-txt-link-rfc2396E" href="mailto:simonpj@microsoft.com"><simonpj@microsoft.com></a><br>
<b>Cc:</b> <a class="moz-txt-link-abbreviated" href="mailto:rae@richarde.dev">rae@richarde.dev</a><br>
<b>Subject:</b> Re: [Haskell Community] [Links]
[Well-Typed Blog] The new GHC diagnostic
infrastructure<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<div>
<p class="MsoNormal"
style="mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:6.0pt;margin-left:0cm">Hello
Simon!<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"><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">On
Wed, 25 Aug 2021 at 13:36, Simon Peyton Jones <<a
href="mailto:simonpj@microsoft.com"
moz-do-not-send="true"
class="moz-txt-link-freetext">simonpj@microsoft.com</a>>
wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid
#CCCCCC 1.0pt;padding:0cm 0cm 0cm
6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Alfredo<o:p></o:p></p>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Thanks
for all the work you are doing on GHC’s error
message infrastructure. Your blog post gives
a great overview.<o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks, and I am glad you
enjoyed it :) <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid
#CCCCCC 1.0pt;padding:0cm 0cm 0cm
6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">As
you know I’m very keen for GHC to have a Note
or wiki page that gives a solid, up-to-date
overview of all the moving parts. (NOT the
design alternatives, nor the time sequence;
just the outcome.) This is incredibly useful
for our future selves; and it helps ensure
that people understand (say) the difference
between Severity and DiagnosticReason, and use
them correctly.<o:p></o:p></p>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">So
the question is: where is the canonical
overview? It could be<o:p></o:p></p>
<ul type="disc">
<li
class="gmail-m4686577435606355590msolistparagraph"
style="mso-list:l1 level1 lfo1">
Your blog post below. But that is a
snapshot… you aren’t going to go back to
edit it as the design evolves. And it’s not
in the repo.<o:p></o:p></li>
<li
class="gmail-m4686577435606355590msolistparagraph"
style="mso-list:l1 level1 lfo1">
The wiki page: <a
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.haskell.org%2Fghc%2Fghc%2F-%2Fwikis%2FErrors-as-(structured)-values&data=04%7C01%7Csimonpj%40microsoft.com%7Cdb46814133bc4404b6d308d9685a487e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637655559255310976%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=A%2FyWqfqPWPYUk3EpaorYP29JvLIhgcdSdcYceFIKvhc%3D&reserved=0"
target="_blank" moz-do-not-send="true">
https://gitlab.haskell.org/ghc/ghc/-/wikis/Errors-as-(structured)-values</a>.
But it’s hard to keep up to date (it was
last edited 3 months ago).<o:p></o:p></li>
<li
class="gmail-m4686577435606355590msolistparagraph"
style="mso-list:l1 level1 lfo1">
Note(s) in the code. We seem to use this
increasingly, and it has the great merit of
being part of the source code itself. But
then we need clear pointer to the canonical
overview Notes, and need to make sure they
are up to date.<o:p></o:p></li>
</ul>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I’m
not advocating any particular path here… just
wanting to be sure that we end up with a good
overview somewhere! What is your view?<o:p></o:p></p>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><u>TL;DR Probably a combo of a
well-written (and up-to-date Wiki) plus some
carefully added Notes (and Haddock comments) in
GHC might do the trick.</u><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">That is a deceptively simple
question you ask there :-) I don't have a strong
view myself, but I can offer the perspective of
somebody who was been for a long time on the
"other side of the trenches" (i.e. working Haskell
programmer, not necessarily working GHC
programmer):<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">* Blog post: yes, it's true
that is a snapshot, and it's true that is not
under GHC's gitlab umbrella, so I wouldn't treat
it as a reliable source of documentation (for the
reasons you also explain) but it's surely a good
testament that "at this point in time, for this
particular GHC commit, things were this way);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">* The wiki page: in the past,
when I wanted to learn more about some GHC
feature, Google would point me to the relevant
Wiki page on the GHC repo describing such a
feature, but I have to say I have almost always
dismissed it, because everybody knows Wikis are
seldomly up-to-date :) In order for a Wiki page to
work we would have to at least add a banner at the
top that states this can be trusted as a reliable
source of information, and offer in the main
section the current, up-to-date design. We can
still offer the historical breakdown of the
designs in later sections, as it's still valuable
info to keep;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">* GHC notes: I have always
considered GHC notes a double-edge sword -- from
one side they are immensely useful when navigating
the source code, but
<span
style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#1A1A1A">these
won't be rendered in the Hackage's haddocks, and
this is not helpful for GHC-the-library users
willing to understand how to use (or which is
the semantic of) a particular type (sure, one
can click "Show Source" on Hackage but it's an
annoying extra step to do just to hunt for
notes). W</span>e already have Notes for this
work in strategic places -- even better, we have
proper Haddock comments for things like "Severity
vs DiagnosticReason" , e.g. <a
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.haskell.org%2Fghc%2Fghc%2F-%2Fblob%2Fmaster%2Fcompiler%2FGHC%2FTypes%2FError.hs%23L279&data=04%7C01%7Csimonpj%40microsoft.com%7Cdb46814133bc4404b6d308d9685a487e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637655559255320972%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=WU2dKu2Q%2FFdwntJ2h%2F6zO1Ic01c9o0VhZc5JrE0AurY%3D&reserved=0"
moz-do-not-send="true">
https://gitlab.haskell.org/ghc/ghc/-/blob/master/compiler/GHC/Types/Error.hs#L279</a>
.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><u>So, in practical terms, I
suggest we (I) give the Wiki a little overhaul
to add at the top the current design (or
anything not captured directly in GHC's source
code) and I will keep an eye on the GHC notes
and Haddock comments to see if there is anything
worth adding. Hopefully as the time goes by the
new design will "spread" across all the
different peers working on GHC, and it will
become "second nature".</u><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Hope it helps, and sorry for
the long ramble!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Alfredo<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid
#CCCCCC 1.0pt;padding:0cm 0cm 0cm
6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Thanks<o:p></o:p></p>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Simon<o:p></o:p></p>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></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"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span
lang="EN-US">From:</span></b><span
lang="EN-US"> Alfredo Di Napoli via
Haskell Community <<a
href="mailto:discourse@haskell.org"
target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">discourse@haskell.org</a>>
<br>
<b>Sent:</b> 23 August 2021 11:26<br>
<b>To:</b> Simon Peyton Jones <<a
href="mailto:simonpj@microsoft.com"
target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">simonpj@microsoft.com</a>><br>
<b>Subject:</b> [Haskell Community]
[Links] [Well-Typed Blog] The new GHC
diagnostic infrastructure</span><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div style="margin-bottom:18.75pt">
<table class="MsoNormalTable"
cellspacing="0" cellpadding="0"
border="0">
<tbody>
<tr>
<td style="width:41.25pt;padding:0cm
0cm 0cm 0cm" width="55"
valign="top">
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
style="font-family:"Helvetica",sans-serif;border:solid
windowtext 1.0pt;padding:0cm"><img
style="width:.4687in;height:.4687in"
id="gmail-m_4686577435606355590Picture_x0020_1"
src="cid:part1.r0XoxfKF.jp0R2hio@glitchbra.in" alt="Image removed by
sender." class="" width="45"
height="45" border="0"></span><o:p></o:p></p>
</td>
<td style="padding:0cm 0cm 0cm 0cm">
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
style="font-family:"Helvetica",sans-serif"><a
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdiscourse.haskell.org%2Fu%2Fadinapoli&data=04%7C01%7Csimonpj%40microsoft.com%7Cdb46814133bc4404b6d308d9685a487e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637655559255330973%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=PgX4crGMBTWVwI2UMcq%2BIFDZ0dDr%2FRWNYZdV%2Fqi8mX8%3D&reserved=0"
target="_blank"
moz-do-not-send="true"><b><span
style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:#006699;text-decoration:none">adinapoli</span></b></a>
<br>
</span><span
style="font-size:8.5pt;font-family:"Tahoma",sans-serif;color:#999999">August
23</span><span
style="font-family:"Helvetica",sans-serif">
</span><o:p></o:p></p>
</td>
</tr>
</tbody>
</table>
<div>
<div style="border:solid #E9E9E9
4.5pt;padding:9.0pt 19.0pt 9.0pt
9.0pt">
<div>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
style="border:solid windowtext
1.0pt;padding:0cm" lang="EN-US"><img
style="width:.3333in;height:.3333in"
id="gmail-m_4686577435606355590Picture_x0020_2"
src="cid:part1.r0XoxfKF.jp0R2hio@glitchbra.in" alt="Image removed by
sender." class="" width="32"
height="32" border="0"></span><span
lang="EN-US"><a
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwell-typed.com%2Fblog%2F2021%2F08%2Fthe-new-ghc-diagnostic-infrastructure%2F&data=04%7C01%7Csimonpj%40microsoft.com%7Cdb46814133bc4404b6d308d9685a487e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637655559255340965%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=X51rdrGoKmUBPB8upLVL69LyInf%2BsYYQqM%2Fd4PnLnGQ%3D&reserved=0"
target="_blank"
moz-do-not-send="true"><b><span
style="color:#006699;text-decoration:none">well-typed.com</span></b></a>
</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span
lang="EN-US">Error! Filename
not specified.</span></b><o:p></o:p></p>
<h3 style="margin-bottom:15.0pt"><span
style="font-size:13.0pt"
lang="EN-US"><a
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwell-typed.com%2Fblog%2F2021%2F08%2Fthe-new-ghc-diagnostic-infrastructure%2F&data=04%7C01%7Csimonpj%40microsoft.com%7Cdb46814133bc4404b6d308d9685a487e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637655559255340965%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=X51rdrGoKmUBPB8upLVL69LyInf%2BsYYQqM%2Fd4PnLnGQ%3D&reserved=0"
target="_blank"
moz-do-not-send="true"><span
style="color:#006699;text-decoration:none">The
new GHC diagnostic
infrastructure - Well-Typed:
The Haskell Consultants</span></a></span><o:p></o:p></h3>
</div>
</div>
</div>
</div>
<div>
<div class="MsoNormal"
style="text-align:center" align="center"><span
style="color:#666666" lang="EN-US">
<hr width="100%" size="1"
align="center">
</span></div>
<p><span style="color:#666666"
lang="EN-US"><a
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdiscourse.haskell.org%2Ft%2Fwell-typed-blog-the-new-ghc-diagnostic-infrastructure%2F2918%2F1&data=04%7C01%7Csimonpj%40microsoft.com%7Cdb46814133bc4404b6d308d9685a487e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637655559255350960%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=tOfAGO5BbhanwBDgMA6eqpgKCLcLTtkum8QOuMsROdc%3D&reserved=0"
target="_blank"
moz-do-not-send="true"><b><span
style="color:white;border:solid
#2F70AC
3.0pt;padding:0cm;background:#2F70AC;text-decoration:none">Visit
Topic</span></b></a> or reply to
this email to respond.</span><o:p></o:p></p>
</div>
<div>
<p><span style="color:#666666"
lang="EN-US">You are receiving this
because you enabled mailing list mode.</span><o:p></o:p></p>
<p><span style="color:#666666"
lang="EN-US">To unsubscribe from these
emails, <a
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdiscourse.haskell.org%2Femail%2Funsubscribe%2F962dfad7651b2ce3d7e30ba9267bdb857c77298d6fdec12626b65e014aaeee33&data=04%7C01%7Csimonpj%40microsoft.com%7Cdb46814133bc4404b6d308d9685a487e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637655559255360954%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=4616hEpSSUcOZ5zQYZMmEbF6mTJcIVKx2nlgA8ENsHM%3D&reserved=0"
target="_blank"
moz-do-not-send="true">
<b><span
style="color:#666666;text-decoration:none">click
here</span></b></a>.</span><o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:0%"><span
style="font-size:11.5pt;font-family:Courier" lang="EN-US">
</span><o:p></o:p></p>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
ghc-devs mailing list
<a class="moz-txt-link-abbreviated" href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a>
<a class="moz-txt-link-freetext" href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a>
</pre>
</blockquote>
<pre class="moz-signature" cols="72">--
Hécate ✨
🐦: @TechnoEmpress
IRC: Hecate
WWW: <a class="moz-txt-link-freetext" href="https://glitchbra.in">https://glitchbra.in</a>
RUN: BSD</pre>
</body>
</html>