<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Although I think "if var" should stay (probably just because of symmetry with "if let"), I have minor concerns with this proposal, as it brings up a more fundamental issue in the evolution process:<div class="">When is a decision final?</div><div class=""><br class=""></div><div class="">I guess it's hard to find the balance between discussing the same things over and over vs. stubborn insisting on a idea that is not as good as expected, but independent from this particular proposal, I think revising a decision should be done with caution, and that it is good that this discussion was started by a member of the Swift team…</div><div class="">Maybe it's possible to formalize the process so that an accepted proposal will not automatically be included in a future release, but rather has to pass a "veto-phase" after it has been implemented in a beta and people got a chance play with it (cancellation should stay an exception, though).</div><div class=""><br class=""></div><div class="">Back to the topic, I don't think "if var" and "guard var" brings more confusion than, for example, the difference between struct and class:</div><div class="">var and let always introduce a new value, and never change properties of something that already exists.</div><div class="">Additionally, I think</div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">if</span> <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">let</span> x = x {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span class="Apple-tab-span" style="white-space:pre">        </span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">var</span> x = x</div></div><div class="">looks rather ugly with all those x-assignments.</div><div class="">Thinking of my own source, I mostly use "if let" with return values of functions, so there is no confusion at all.</div><div class=""><br class=""></div><div class="">The argument of symmetry doesn't apply to function parameters, and I'm not really opposed to remove the "var-option" there — although afaics, most languages don't enforce const on parameters (which has the benefit that struct and class are treated the same way… and const has no advantage in a narrow scope)</div><div class=""><br class=""></div><div class="">Tino</div></body></html>