<div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif">I vote (2), fairly strongly<br></div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Remember this comment from Vlad:</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">
<blockquote dir="auto" class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><a class="gmail-user-mention gmail-notranslate" href="https://github.com/phadej">@phadej</a> For what it's worth, this was my initial thinking when I put <code class="gmail-notranslate">ktype</code> there, so past me agrees with you. What changed my opinion is that two years later (i.e. now) I looked at the examples like <code class="gmail-notranslate"><b>fn (type Int -> [a])</b></code> and had to double check the specification if it was supposed to be <code class="gmail-notranslate">fn ((type Int) -> [a])</code> or <code class="gmail-notranslate">fn (type (Int -> [a]))</code>.</blockquote>
</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">The point is that the `type` namespace changer can appear <b>deep within a type</b>. It's not like "@"! For exmaple</div><div class="gmail_default" style="font-family:tahoma,sans-serif;margin-left:40px">
<code class="gmail-notranslate">fn ((type K) -> [a])</code>
</div><div class="gmail_default" style="font-family:tahoma,sans-serif">makes perfect sense. fn has a required type argument, but in the (type K) <b>sub-part </b>of the type do we switch to the type namespace. (Maybe K is in scope also as a data constructor.) Without the parens, do you really want to wonder about how this parses?<br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">
<div class="gmail_default" style="font-family:tahoma,sans-serif;margin-left:40px">
<code class="gmail-notranslate">fn (type K -> [a])</code></div><div class="gmail_default" style="font-family:tahoma,sans-serif;margin-left:40px"><code class="gmail-notranslate"><br></code></div><div class="gmail_default" style="font-family:tahoma,sans-serif;margin-left:40px">
</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><div class="gmail_default" style="font-family:tahoma,sans-serif"><code class="gmail-notranslate" style="font-family:tahoma,sans-serif">I
prefer code that is slightly longer, but much clearer, than saving two
characters but requiring reference to the user manual to parse.<br></code></div><div class="gmail_default"><code class="gmail-notranslate" style="font-family:tahoma,sans-serif"><br></code>
</div></div><div class="gmail_default" style="margin-left:40px">
</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><code class="gmail-notranslate" style="font-family:tahoma,sans-serif">Let's make it simple and unambiguous for now. If it seems painful in practice we can debate liberalising it.</code></div><div class="gmail_default" style="font-family:tahoma,sans-serif"><code class="gmail-notranslate"><br></code></div><div class="gmail_default" style="font-family:tahoma,sans-serif"><code class="gmail-notranslate">Simon<br></code>
</div>
</div></div>