<div dir="ltr">I should also add I think I remember the <span style="font-family:monospace,monospace">String</span> people trying to add <span style="font-family:monospace,monospace">collection[]</span> empty subscripts to the language but I don’t remember that ever going through.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 11, 2017 at 3:15 PM, Kelvin Ma <span dir="ltr">&lt;<a href="mailto:kelvin13ma@gmail.com" target="_blank">kelvin13ma@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Yes, a 0-ary operator like that would have to be hard baked into the language itself. Of course, the subscript notation has much more serious problems, there is no way to allow one-sided subscripting, but disallow two-sided subscripting for the memory API, while still allowing two-sided subscripting for ordinary slicing operations. This is why I still think <span style="font-family:monospace,monospace">at:from:</span> is the much better syntax.<br></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 11, 2017 at 3:01 PM, Nevin Brackett-Rozinsky <span dir="ltr">&lt;<a href="mailto:nevin.brackettrozinsky@gmail.com" target="_blank">nevin.brackettrozinsky@gmail.<wbr>com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I believe Kelvin was asking about the usage of ellipsis *by itself*, as in Xiaodi’s example, “newBuffer[...]”.<span class="m_6178730821770938857HOEnZb"><font color="#888888"><div><br></div><div>Nevin</div><div><br></div></font></span></div><div class="m_6178730821770938857HOEnZb"><div class="m_6178730821770938857h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 11, 2017 at 2:42 PM, Anders Ha 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">ICYMI, SE-0172 was the proposal of one sided range and it has been implemented as part of 4.0.<br>
<br>
<a href="https://github.com/apple/swift-evolution/blob/master/proposals/0172-one-sided-ranges.md" rel="noreferrer" target="_blank">https://github.com/apple/swift<wbr>-evolution/blob/master/proposa<wbr>ls/0172-one-sided-ranges.md</a><br>
<br>
<br>
Regards<br>
Anders<br>
<div class="m_6178730821770938857m_-4499411204934550713HOEnZb"><div class="m_6178730821770938857m_-4499411204934550713h5"><br>
&gt; On 11 Oct 2017, at 4:43 AM, Kelvin Ma via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Tue, Oct 10, 2017 at 1:00 AM, Xiaodi Wu &lt;<a href="mailto:xiaodi.wu@gmail.com" target="_blank">xiaodi.wu@gmail.com</a>&gt; wrote:<br>
&gt; On Mon, Oct 9, 2017 at 19:47 Kelvin Ma via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt; Hi guys, after passing SE 184 (A), I want to get some community feedback on the next phase of our Swift pointer overhaul which is a partial initialization/deinitializatio<wbr>n API for UnsafeMutableBufferPointer and UnsafeMutableRawBufferPointer.<br>
&gt;<br>
&gt; You can read about the originally proposed API in the original SE 184 document, basically we use an at:from: system for binary memory state operations where the at: argument supplies the start position in the destination buffer, and the from: source argument supplies the number of elements to copy/move into the destination.<br>
&gt;<br>
&gt; newBuffer.moveInitialize(at: 0, from: self.buffer[self.zero... ])<br>
&gt; newBuffer.moveInitialize(at: self.zero, from: self.buffer[0 ..&lt; self.zero])<br>
&gt;<br>
&gt; Some other proposed APIs include using subscript notation, and writing a special buffer slice type and a corresponding protocol to handle this.<br>
&gt;<br>
&gt; newBuffer[0...                        ].moveInitialize(from: self.buffer[self.zero...   ])<br>
&gt; newBuffer[self.zero ... self.zero &lt;&lt; 1].moveInitialize(from: self.buffer[0 ..&lt; self.zero])<br>
&gt;<br>
&gt; Fully embracing slice notation and SwiftLint style, this could be:<br>
&gt;<br>
&gt; newBuffer[...].moveInitialize(<wbr>from: buffer[zero...])<br>
&gt; newBuffer[zero...].moveInitial<wbr>ize(from: buffer[..&lt;zero])<br>
&gt;<br>
&gt; Is the solo ellipsis operator even valid Swift syntax? And I agree this would look nice, but as others have mentioned, Swift has the convention that the one-sided slice operators are equivalent to start ... endIndex and startIndex ... end. And that seems to strongly suggest that the method would initialize the entire range which is not what we want to communicate.<br>
&gt;<br>
&gt;<br>
&gt; A hypothetical comparison of this API, the at:from: API, and the existing plain pointer API can be found in this basic Swift queue implementation here if anyone wants to see how this would look in “real” code. I’m interested in seeing which syntax and which API is preferred as well as what people would like to do with an expanded Swift buffer pointer toolbox.<br>
&gt;<br>
&gt; Would you mind rewriting these examples in a more common Swift style (for instance, SwiftLint/GitHub style)? Everyone is entitled to write code how they please, but it’s much easier to compare how things “look” when the overall formatting is more familiar.<br>
&gt;<br>
&gt; I mean the purpose of the example is to compare the call sites of the actual buffer methods. ignoring the function signatures and instead getting distracted by brace placement seems like the kind of bikeshedding we should be discouraging lol.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; ______________________________<wbr>_________________<br>
&gt; swift-evolution mailing list<br>
&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-evolution</a><br>
&gt;<br>
&gt; ______________________________<wbr>_________________<br>
&gt; swift-evolution mailing list<br>
&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-evolution</a><br>
<br>
______________________________<wbr>_________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-evolution</a><br>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>