<html><body><div id="edo-message"><div>-1. I'm not enthusiastic about using ~=. IMO it's only a small improvement over the "if case let..." hieroglyphics and still too cryptic.</div><div><br></div><div>Like the others, I really like "matches" or some other, more explicit, keyword.</div><div><br></div><div>Anything more general around pattern-matching should probably wait until we start adding language support for regexes and other complex patterns. Then we can make something that is more logically consistent.</div><div><br><style>#edo-signature img {max-width: 90%}</style><div id="edo-signature" style="font-family: 'Helvetica Neue','Helvetica',Helvetica,Arial,sans-serif;font:'-apple-system-body';"></div><br><div id="edo-link"></div></div></div><div id="edo-original"><div><br><br><blockquote type="cite" style="margin:1ex 0 0 0;border-left:1px #ccc solid;padding-left:0.5ex;"><div>On Oct 24, 2016 at 10:55 pm, &lt;<a href="mailto:swift-evolution@swift.org">Haravikk via swift-evolution</a>&gt; wrote:<br><br></div><div><meta http-equiv="Content-Type" content="text/html charset=utf-8"><br class=""><div><blockquote type="cite" class=""><div class="">On 24 Oct 2016, at 21:38, Martin Waitz via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Hi,<br class=""><br class="">When using a pattern match operator, I’d prefer to reverse its arguments:<br class=""><br class=""> &nbsp;&nbsp;&nbsp;if value matches pattern …<br class=""><br class=""> &nbsp;&nbsp;&nbsp;if result =~ .success(let x) { use(x) }<br class=""><br class="">Being used to pattern matching in functional languages, I also do like our current syntax.<br class="">Using ~= together with `let` on the left looks very strange to me.</div></div></blockquote><br class=""></div><div>That's interesting point, it does kind of make more sense that way round, but I wonder if we were to d that a keyword might be even better than an operate, like:</div><div><br class=""></div><div><font face="Monaco" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>if result matches .success(let x) { use(x) }</font></div><div><font face="Monaco" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>if result matches let x? { use(x) }</font></div><div><br class=""></div><div>And so-on? Maybe matches isn't the right keyword; we could even re-use the is keyword for something shorter (and just think of a type as a form of pattern)? I could like the idea of doing:</div><div><br class=""></div><div><font face="Monaco" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>if result is let x? { use(x) }</font></div><div><br class=""></div><div>My reasoning being that a keyword makes it much more obvious what's going on as it can read like natural language to convey that it's a form of matching, wheres ~= as an operator still requires some learning if you've not seen something similar in another language.</div>_______________________________________________
swift-evolution mailing list
<a dir="ltr" href="mailto:swift-evolution@swift.org" x-apple-data-detectors="true" x-apple-data-detectors-type="link" x-apple-data-detectors-result="3">swift-evolution@swift.org</a>
<a dir="ltr" href="https://lists.swift.org/mailman/listinfo/swift-evolution" x-apple-data-detectors="true" x-apple-data-detectors-type="link" x-apple-data-detectors-result="4">https://lists.swift.org/mailman/listinfo/swift-evolution</a>
</div></blockquote></div></div></body></html>