<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><blockquote type="cite" class="clean_bq"><div dir="ltr"><div>The issue is that in English, 'guard' has an inverted logical connotation to how it is used in Swift. For example, take this sentence:<br><br></div>"In some functions it's a good idea is to put some checks in place, in order to guard against invalid input values."</div></blockquote></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">That’s a good point, but I think it depends on the way you read it. I’m a non-native English speakers and the way a read the guard is different. Using a simple example:</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><blockquote type="cite" class="clean_bq"><div dir="ltr"><div>guard x &gt; 0 else {<br></div>&nbsp;&nbsp;&nbsp; return<br><div>}</div></div></blockquote></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div> I don’t read “<i>Guard that x is higher than 0 else&nbsp;…&nbsp;</i>”, but instead I read it like “<i>Guard! x must be higher than 0 else&nbsp;…</i>”.<div><br></div><div>If you read it like the first sentence I agree that it sounds strange and that another word, like <i>ensure</i>, sounds better.&nbsp;</div><div>If you read it like that second sentence the word <i>guard</i> makes more sense.</div><div><br></div><div>Probably adding a colon could make it more clear to the reader:</div><div> <div id="bloop_sign_1477413943997762048" class="bloop_sign"></div> <div><br></div>guard: x &gt; 0 else {</div><div>&nbsp; &nbsp; return</div><div>}</div><div><br></div><div>But then we risk to add complexity to the syntax.</div><div><br></div><div>Marco</div><div><br></div><div><br><p class="airmail_on">On 25 October 2016 at 18:38:50, Jay Abbott via swift-evolution (<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>) wrote:</p> <blockquote type="cite" class="clean_bq"><span><div><div></div><div>


<title></title>


<div dir="ltr">
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>I mentioned this in passing on a <a href="https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20161024/028371.html">
different thread</a>. Although it caused some slight confusion when
I first learned the 'guard' keyword, it was easy to overcome and I
didn't think the issue was strong enough to warrant a change.
However, after reading the other discussion on that thread (around
the possibility of a 'matches' keyword and how code is "read out"
or "internally verbalised"), and seeing how passionate everyone
here is about Swift, I'm thinking that maybe it should be
changed.<br>
<br></div>
The issue is that in English, 'guard' has an inverted logical
connotation to how it is used in Swift. For example, take this
sentence:<br>
<br></div>
"In some functions it's a good idea is to put some checks in place,
in order to guard against invalid input values."<br>
<br></div>
Swift's 'guard' keyword is to <b>guard</b> against <b>invalid</b>
values.<br></div>
Or to put it another way, to <b>ensure</b> that we have
<b>valid</b> values.<br>
<br></div>
However, the way it reads in Swift, we <b>guard</b> that we have
<b>valid</b> values.<br>
<br></div>
I fully understand and agree that it's better to state the
<b>true</b> condition for <b>valid</b> values here, using
<b>else</b> to perform a contingency. And I understand why the word
'guard' was picked (given the above example sentence). I just think
that 'ensure' would be better.<br>
<br></div>
ensure x &gt; 0 else {<br></div>
&nbsp;&nbsp;&nbsp; return<br>
<div>}<br>
<br></div>
<div>ensure camp.isSafe else {<br></div>
<div>&nbsp;&nbsp;&nbsp; runForTheHills()<br>
}<br></div>
<div>
<div><br></div>
<div>ensure let thingy = object as? Thingy else {<br></div>
<div>&nbsp;&nbsp;&nbsp; return
ExamineThingyResult.NotAThingy<br></div>
<div>}<br>
<br></div>
<div>As I said, I thought it was too small a niggle to worry about,
but seeing how people on here care so much about making Swift
better, and the willingness to change things, I thought I'd suggest
it. Although it would be a breaking change, the code changes are
easy.<br>
<br></div>
<div>So what do people think? In particular it would be interesting
to hear from non-native English speakers on this, did 'guard'
confuse you or did 'guard' cause your understanding of the English
word to be confused?<br></div>
<div><br></div>
</div>
</div>


_______________________________________________<br>swift-evolution mailing list<br>swift-evolution@swift.org<br>https://lists.swift.org/mailman/listinfo/swift-evolution<br></div></div></span></blockquote></div></body></html>