I understand that that&#39;s your thinking. I just don&#39;t understand how you arrived at your rule (2). It&#39;s not in the dictionary definition of the words prefix and suffix. Nor do I find any documentation of such a rule in Swift. Nor do I think you&#39;ve shown that such a rule is necessary for clearing up some actual confusion. Nor do I see that applying the rule and using subscripts yields a superior solution to what we currently have.<br><div class="gmail_quote"><div dir="ltr">On Tue, Jun 28, 2016 at 5:40 PM Brent Royal-Gordon &lt;<a href="mailto:brent@architechies.com">brent@architechies.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">&gt; I was in the midst of writing a reply along the same lines, so I figured I&#39;d add to David&#39;s reply here. There are two characteristics I would expect from a method named &quot;prefix&quot; or &quot;suffix&quot;.<br>
&gt;<br>
&gt; First, it should return a subsequence containing zero to count elements. (By contrast, something named &quot;first&quot; should return nil or one element, but certainly no more.)<br>
&gt;<br>
&gt; Second, in the case of &quot;prefix&quot;, the first element of the subsequence (if any) should be the first element of the sequence; in the case of &quot;suffix&quot;, the last element of the subsequence (if any) should be the last element of the sequence.<br>
<br>
I would phrase these things slightly differently. In my thinking, a method with `prefix` or `suffix` in its name:<br>
<br>
        1. Operates on a subsequence at the beginning/end of the sequence,<br>
<br>
        2. Measured *relative* to the beginning/end.<br>
<br>
An index-based operation doesn&#39;t fit this definition because an index is not *relative* to anything—it&#39;s an *absolute* position within the sequence.<br>
<br>
Put another way, in my view, &quot;prefix&quot; and &quot;suffix&quot; don&#39;t merely mean &quot;anchored at the beginning/end&quot;. A prefix or suffix is attached to a &quot;middle&quot;. There is no middle in the index-based operations.<br>
<br>
It is, of course, very possible to use methods to express what the index-based operations do:<br>
<br>
        friends.upTo(i)<br>
        friends.through(i)<br>
        friends.from(i)<br>
<br>
But at this point, we&#39;ve basically arrived at `friends[to: i]` etc.<br>
<br>
--<br>
Brent Royal-Gordon<br>
Architechies<br>
<br>
</blockquote></div>