<div dir="ltr">I&#39;d be interested in taking it but I have another ticket already, so if someone else wants it they should take it.<div><br></div><div>Austin</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Dec 7, 2015 at 2:35 PM, Dmitri Gribenko <span dir="ltr">&lt;<a href="mailto:gribozavr@gmail.com" target="_blank">gribozavr@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"><span class="">On Mon, Dec 7, 2015 at 2:27 PM, Jacob Bandes-Storch &lt;<a href="mailto:jtbandes@gmail.com">jtbandes@gmail.com</a>&gt; wrote:<br>
&gt; What do you mean by &quot;without copying the underlying collection&quot;?<br>
<br>
</span>The original collection should be preserved through this upgrade, and<br>
not, say, copied into a fresh Array.<br>
<span class=""><br>
&gt; Is this<br>
&gt; specifically for the case where the AnySequence is wrapping a collection<br>
&gt; (which is not always the case)?<br>
<br>
</span>Exactly.<br>
<div class="HOEnZb"><div class="h5"><br>
Dmitri<br>
<br>
&gt; On Mon, Dec 7, 2015 at 2:18 PM, Dmitri Gribenko via swift-dev<br>
&gt; &lt;<a href="mailto:swift-dev@swift.org">swift-dev@swift.org</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; It would require a proposal and a review, but the implementation is<br>
&gt;&gt; more challenging here than the API design.  The proposal would be<br>
&gt;&gt; trivial, just one extra API, if I&#39;m imagining this correctly.<br>
&gt;&gt;<br>
&gt;&gt; Dmitri<br>
&gt;&gt;<br>
&gt;&gt; On Mon, Dec 7, 2015 at 2:10 PM, Austin Zheng &lt;<a href="mailto:austinzheng@gmail.com">austinzheng@gmail.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt; Would this require a review/proposal, since it involves an API change?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Mon, Dec 7, 2015 at 2:08 PM, Dmitri Gribenko via swift-dev<br>
&gt;&gt; &gt; &lt;<a href="mailto:swift-dev@swift.org">swift-dev@swift.org</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Hi,<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; If someone looks for a starter project in the standard library with<br>
&gt;&gt; &gt;&gt; intermediate complexity (prior experience with Swift generics<br>
&gt;&gt; &gt;&gt; required), here&#39;s one.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; This is in the area of existential sequence and collection wrappers.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Upgrading AnyForwardCollection to AnyRandomAccessCollection works:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; (swift) AnyRandomAccessCollection(AnyForwardCollection([1,2,3]))<br>
&gt;&gt; &gt;&gt; // r2 : AnyRandomAccessCollection&lt;Int&gt;? =<br>
&gt;&gt; &gt;&gt; Optional(Swift.AnyRandomAccessCollection&lt;Swift.Int&gt;(_box:<br>
&gt;&gt; &gt;&gt; Swift._CollectionBox&lt;Swift.Array&lt;Swift.Int&gt;&gt;))<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Seems like we don&#39;t provide APIs to upgrade AnySequence to<br>
&gt;&gt; &gt;&gt; Any*Collection:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; (swift) AnyRandomAccessCollection(AnySequence([1,2,3]))<br>
&gt;&gt; &gt;&gt; &lt;REPL Input&gt;:1:1: error: cannot invoke initializer for type<br>
&gt;&gt; &gt;&gt; &#39;AnyRandomAccessCollection&lt;_&gt;&#39; with an argument list of type<br>
&gt;&gt; &gt;&gt; &#39;(AnySequence&lt;Int&gt;)&#39;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Of course, this should work without copying the underlying collection.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; <a href="https://bugs.swift.org/browse/SR-119" rel="noreferrer" target="_blank">https://bugs.swift.org/browse/SR-119</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Dmitri<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt; main(i,j){for(i=2;;i++){for(j=2;j&lt;i;j++){if(!(i%j)){j=0;break;}}if<br>
&gt;&gt; &gt;&gt; (j){printf(&quot;%d\n&quot;,i);}}} /*Dmitri Gribenko &lt;<a href="mailto:gribozavr@gmail.com">gribozavr@gmail.com</a>&gt;*/<br>
&gt;&gt; &gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt; swift-dev mailing list<br>
&gt;&gt; &gt;&gt; <a href="mailto:swift-dev@swift.org">swift-dev@swift.org</a><br>
&gt;&gt; &gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-dev" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-dev</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; main(i,j){for(i=2;;i++){for(j=2;j&lt;i;j++){if(!(i%j)){j=0;break;}}if<br>
&gt;&gt; (j){printf(&quot;%d\n&quot;,i);}}} /*Dmitri Gribenko &lt;<a href="mailto:gribozavr@gmail.com">gribozavr@gmail.com</a>&gt;*/<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; swift-dev mailing list<br>
&gt;&gt; <a href="mailto:swift-dev@swift.org">swift-dev@swift.org</a><br>
&gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-dev" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-dev</a><br>
&gt;<br>
&gt;<br>
<br>
<br>
<br>
--<br>
main(i,j){for(i=2;;i++){for(j=2;j&lt;i;j++){if(!(i%j)){j=0;break;}}if<br>
(j){printf(&quot;%d\n&quot;,i);}}} /*Dmitri Gribenko &lt;<a href="mailto:gribozavr@gmail.com">gribozavr@gmail.com</a>&gt;*/<br>
</div></div></blockquote></div><br></div>