<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">On Jan 6, 2016, at 7:05 AM, James Campbell via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:<div><blockquote type="cite" class=""><div class=""><div dir="ltr" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Should we add this to the list of things requested that will be rejected ?</div></div></blockquote><div><br class=""></div><div>Yes, if you send a good PR adding it, I’ll merge it. &nbsp;Note that it was (very briefly) named “unless” as a placeholder until May 1, 2015. &nbsp;We carefully bikeshedded this and settled on guard.</div><div><br class=""></div><div>-Chris</div><br class=""><blockquote type="cite" class=""><div class=""><div class="gmail_extra" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br class=""><div class="gmail_quote">On Wed, Jan 6, 2016 at 10:58 AM, Greg Parker<span class="Apple-converted-space">&nbsp;</span><span dir="ltr" class="">&lt;<a href="mailto:gparker@apple.com" target="_blank" class="">gparker@apple.com</a>&gt;</span><span class="Apple-converted-space">&nbsp;</span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><span class=""><br class="">&gt; On Jan 6, 2016, at 2:09 AM, James Campbell via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:<br class="">&gt;<br class="">&gt; What is "guard"? why its the opposite to "if"!<br class="">&gt;<br class="">&gt; So in other languages what have they called this, well in Ruby they called it "unless" which I feel is a much clearer form of intent and lower barrier of entry for a user. See this code.<br class="">&gt;<br class="">&gt; guard name != nil else {<br class="">&gt;&nbsp; &nbsp; fatalError("Please enter a name")<br class="">&gt; }<br class="">&gt;<br class="">&gt; What does that actually say if you look at it from a linguistic point of view, "guard that name doesn't equal nil otherwise fail", that feels very obtuse.<br class="">&gt;<br class="">&gt; With my proposal the syntax could become this:<br class="">&gt;<br class="">&gt; unless name != nil {<br class="">&gt;&nbsp; &nbsp;fatalError("Please enter a name")<br class="">&gt; }<br class="">&gt;<br class="">&gt; This now reads as "unless name doesn't equal nil then fail" which I think is a much clearer syntax. I think this would be a great change for Swift 3. For me I think this is more friendly for beginners.<br class="">&gt;<br class="">&gt; It would support the same structure as an if block:<br class="">&gt;<br class="">&gt; unless name != nil {<br class="">&gt; }<br class="">&gt; else<br class="">&gt; {<br class="">&gt; }<br class="">&gt;<br class="">&gt; Going forward it would allow us to be more flexible if we added inline if/unless statement, as in Ruby.<br class="">&gt;<br class="">&gt; callThisMethod() if age &gt; 0<br class="">&gt; throwThisError() unless age &lt;= 0<br class=""><br class=""></span>`guard` is not the opposite of `if`. `guard` has effects that `if` does not. We deliberately chose not to provide syntax that was identical to `if not X`.<br class=""><br class="">History: The very first proposal of this feature was called `unless`. Fifty-odd messages of discussion later it was called `require`, in part because we did not want to match the `if not` constructs seen in languages like Perl and Ruby. That name was still controversial. A few weeks later it was changed to `guard..else` to general acclaim because the intended use is commonly known as a "guard clause".<br class=""><span class="HOEnZb"><font color="#888888" class=""><br class=""><br class="">--<br class="">Greg Parker&nbsp; &nbsp; &nbsp;<a href="mailto:gparker@apple.com" class="">gparker@apple.com</a>&nbsp; &nbsp; &nbsp;Runtime Wrangler<br class=""><br class=""><br class=""></font></span></blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>--<span class="Apple-converted-space">&nbsp;</span><br class=""><div class="gmail_signature"><div dir="ltr" class=""><div class=""><div dir="ltr" class=""><div dir="ltr" class=""><div class=""><span style="font-size: 16px; line-height: 19.2px;" class=""></span><span style="font-size: 12.8px;" class="">&nbsp;Wizard</span><br class=""></div><div class=""><a href="mailto:james@supmenow.com" target="_blank" class="">james@supmenow.com</a></div><div class="">+44 7523 279 698</div></div></div></div></div></div></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=RC5Cq0zAxCHc1sM9Uy3-2BojrrUAw-2F96zH69NULNHPvCto0HjWNI-2FPw6FDHdhNfhbtVpAEG14XNZQ6dVTGIVuLgRsEUqe8n32nxq5Tz4rOCUD0MYumb-2Btl8cwNCBP1uXJZuCWVZCIaodYQ4biG2sFLaTS0KsI6dVvUuMnhTbTEjt-2FSOlPk5kO8-2BrLsICNswNatCLty4vsLjN7FXefU8r7KekWwg1gcQrv2UznPPhcFIvQ-3D" alt="" width="1" height="1" border="0" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; height: 1px !important; width: 1px !important; border-width: 0px !important; margin: 0px !important; padding: 0px !important;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class=""><span class="Apple-converted-space">&nbsp;</span>_______________________________________________</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">swift-evolution mailing list</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="mailto:swift-evolution@swift.org" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">swift-evolution@swift.org</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></div></blockquote></div><br class=""></body></html>