To which human would it be misleading?<br><br>To the writer? No, because the compiler will warn you right away. By the time you&#39;re done with writing the first line, it&#39;ll warn you that Int and Double are unused variables. And if you try to use x and y, you get an error.<br><br>To the reader? Only if the writer knowingly wrote this misleading code. In other words, it&#39;s a nice puzzle, but no reader will encounter this in real-world code, unless they&#39;re being tormented by the writer on purpose.<br><div class="gmail_quote"><div dir="ltr">On Sat, May 6, 2017 at 16:28 Brent Royal-Gordon &lt;<a href="mailto:brent@architechies.com">brent@architechies.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">&gt; On May 5, 2017, at 11:06 PM, Xiaodi Wu &lt;<a href="mailto:xiaodi.wu@gmail.com" target="_blank">xiaodi.wu@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; The identifier after a colon is *never* a type in any pattern matching, and there&#39;s no need of which I&#39;m aware to support type annotations in pattern matching. We put colons after labels, and the current syntax is perfectly consistent here. What is the defect you&#39;re trying to cure?<br>
<br>
The defect underlying this proposal: `let (x: Int, y: Double)` looks like it&#39;s declaring `x` and `y` of types `Int` and `Double`, but it&#39;s actually declaring `Int` and `Double` and binding them to `x` and `y`. Your code&#39;s meaning is perfectly unambiguous to the compiler, of course, but it&#39;s misleading to the human.<br>
<br>
--<br>
Brent Royal-Gordon<br>
Architechies<br>
<br>
</blockquote></div>