<html 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="Title" content="">
<meta name="Keywords" content="">
<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";}
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;}
span.hoenzb
        {mso-style-name:hoenzb;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:Calibri;
        color:windowtext;}
span.msoIns
        {mso-style-type:export-only;
        mso-style-name:"";
        text-decoration:underline;
        color:teal;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:595.0pt 842.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body bgcolor="white" lang="EN-GB" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;mso-fareast-language:EN-US">The other idea I had, which would at least allow the parser to target the AST (suggestions below would suggest we drop one or both of the Word{8,64} constructors),
 was to have 0w3 go to Word8, and 0W3 go to Word64…<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;mso-fareast-language:EN-US">Scott’s suggestion is pretty weird incidentally, it would mean that inserting
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;mso-fareast-language:EN-US">  fun int_to_word x = x<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;mso-fareast-language:EN-US">in a program that doesn’t contain that string anywhere could cause it to fail to typecheck.  I mildly prefer Ramana’s because to get the comparable problem there,
 you’d have to insert the slightly more involved<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;mso-fareast-language:EN-US">  structure Word8 = struct fun fromInt i = I end;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;mso-fareast-language:EN-US">which would break pieces of code with no textually apparent references to Word8.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;mso-fareast-language:EN-US">Michael<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-family:Calibri;color:black">From: </span>
</b><span style="font-family:Calibri;color:black">Ramana Kumar <Ramana.Kumar@cl.cam.ac.uk><br>
<b>Date: </b>Monday, 28 November 2016 at 20:29<br>
<b>To: </b>Scott Owens <S.A.Owens@kent.ac.uk><br>
<b>Cc: </b>"Norrish, Michael (Data61, Canberra City)" <Michael.Norrish@data61.csiro.au>, "developers@cakeml.org" <developers@cakeml.org><br>
<b>Subject: </b>Re: [CakeML-dev] [CakeML-Dev] targeting word literal constructors in AST<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I like Scott's suggestion.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On 28 November 2016 at 20:23, Scott Owens <<a href="mailto:S.A.Owens@kent.ac.uk" target="_blank">S.A.Owens@kent.ac.uk</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">Or we could have the parser map 0w3 to something like “int_to_word 3” and leave it in the programmers control, and have the basis start with a default.<br>
<span style="color:#888888"><br>
<span class="hoenzb">Scott</span></span><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
> On 2016/11/28, at 07:36, Ramana Kumar <<a href="mailto:Ramana.Kumar@cl.cam.ac.uk">Ramana.Kumar@cl.cam.ac.uk</a>> wrote:<br>
><br>
> I doubt we want to go down that path...<br>
><br>
> Here's a (somewhat random) suggestion: word literals (0w3 etc.) are mapped to Word64.word, and to get bytes via parser you need to use Word8.fromInt.<br>
><br>
> On 28 November 2016 at 15:35, <<a href="mailto:Michael.Norrish@data61.csiro.au">Michael.Norrish@data61.csiro.au</a>> wrote:<br>
> Presumably SML allows type inference to figure out the width in the same way that numeric operations get overload-resolved:<br>
><br>
><br>
><br>
> (* Poly/ML *)<br>
><br>
> > Word8.+(0w3, 0w4);<br>
><br>
> val it = 0wx7: Word8.word<br>
><br>
> > Word64.+(0w3, 0w4);<br>
><br>
> val it = 0wx7: Word64.word<br>
><br>
><br>
><br>
> Michael<br>
><br>
><br>
><br>
> From: Ramana Kumar <<a href="mailto:Ramana.Kumar@cl.cam.ac.uk">Ramana.Kumar@cl.cam.ac.uk</a>><br>
> Date: Monday, 28 November 2016 at 11:46<br>
> To: "Norrish, Michael (Data61, Canberra City)" <<a href="mailto:Michael.Norrish@data61.csiro.au">Michael.Norrish@data61.csiro.au</a>><br>
> Cc: "<a href="mailto:developers@cakeml.org">developers@cakeml.org</a>" <<a href="mailto:developers@cakeml.org">developers@cakeml.org</a>><br>
> Subject: Re: [CakeML-Dev] targeting word literal constructors in AST<br>
><br>
><br>
><br>
> SML does not distinguish syntactically. I guess we might have to invent some syntax...?<br>
><br>
><br>
><br>
> On 28 November 2016 at 11:03, <<a href="mailto:Michael.Norrish@data61.csiro.au">Michael.Norrish@data61.csiro.au</a>> wrote:<br>
><br>
> There are both Word8 and Word64 constructors for word literals in the AST type. How are the parser or lexer meant to figure out which any piece of syntax corresponds to?<br>
><br>
> Michael<br>
><br>
> _______________________________________________<br>
> Developers mailing list<br>
> <a href="mailto:Developers@cakeml.org">Developers@cakeml.org</a><br>
> <a href="https://lists.cakeml.org/listinfo/developers" target="_blank">https://lists.cakeml.org/listinfo/developers</a><br>
><br>
><br>
><br>
><br>
> _______________________________________________<br>
> Developers mailing list<br>
> <a href="mailto:Developers@cakeml.org">Developers@cakeml.org</a><br>
> <a href="https://lists.cakeml.org/listinfo/developers" target="_blank">https://lists.cakeml.org/listinfo/developers</a><br>
><br>
><br>
> _______________________________________________<br>
> Developers mailing list<br>
> <a href="mailto:Developers@cakeml.org">Developers@cakeml.org</a><br>
> <a href="https://lists.cakeml.org/listinfo/developers" target="_blank">https://lists.cakeml.org/listinfo/developers</a><o:p></o:p></p>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>