<div dir="ltr">+1<div><br></div><div>I think that what we have is completely workable but `local` could give an added degree of control and expression while preserving/augmenting the model that we already have for access modifiers.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Feb 28, 2016 at 2:18 AM, Nate Cook via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">&gt; On Feb 26, 2016, at 9:42 PM, Stephen Celis &lt;<a href="mailto:stephen.celis@gmail.com">stephen.celis@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; On Feb 26, 2016, at 10:21 PM, Nate Cook via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; For example, one algorithm for rotating a collection uses an &quot;unguarded&quot; rotate as one of its steps, which is optimized to rotate a portion of the collection without bothering to check the inputs. It makes sense to extract this bit of the full rotation algorithm into a separate function, but it&#39;s unsafe to call unless very specific requirements are met that are unlikely outside the expected context. Being able to specify a local access level for the unguarded rotation would make this safer.<br>
&gt;<br>
&gt; I&#39;m curious if you could make the example more concrete and provide actual code that would benefit? One of the tough things about evaluating both SE-0025 and SE-0026 is that the proposals themselves contain very basic examples that don&#39;t sell the concepts.<br>
<br>
</span>Sure. you can see the rotate code here:<br>
        <a href="https://gist.github.com/natecook1000/df70dd6a1e1aa1228d42" rel="noreferrer" target="_blank">https://gist.github.com/natecook1000/df70dd6a1e1aa1228d42</a><br>
<br>
`unguardedRotate` is the method that would benefit from being locally scoped. It was even more fragile before the last refactor, but in its current form descends into an infinite loop if the parameter is either the startIndex or endIndex of the collection.<br>
<br>
Nate<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</div></div></blockquote></div><br></div>