<div dir="ltr">This is a nice idea that I would definitely support having in the stdlib. By the way, are there any benchmarks supporting that transducers do indeed result in a performance gain? Having to allocate/traverse fewer arrays sure seems like a win, but other constant factors may be introduced by the extensive use of closures.<div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Dec 25, 2015 at 6:53 PM, Dmitri Gribenko 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="">On Fri, Dec 25, 2015 at 9:07 AM, Jason Jobe via swift-evolution<br>
&lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;<br>
&gt; Okay,<br>
&gt;<br>
&gt; I would like to propose that Transducers be considered for addition to the Swift core.<br>
&gt;<br>
&gt; &quot;Transducers are a powerful and composable way to build algorithmic transformations that you can reuse in many contexts…&quot;<br>
&gt;<br>
&gt; There are ways to build them w/out any language modification but they are not as efficient as alternative expressions.<br>
<br>
</span>Hi Jason,<br>
<br>
I was playing with a similar idea here:<br>
<br>
<a href="https://github.com/apple/swift/blob/master/test/Prototypes/CollectionTransformers.swift" rel="noreferrer" target="_blank">https://github.com/apple/swift/blob/master/test/Prototypes/CollectionTransformers.swift</a><br>
<br>
You wouldn&#39;t find the word &#39;transducer&#39; there, but it is based on<br>
similar principles, except it also allows you to optimize the AST of<br>
the transformation, and it is structured in such a way that would<br>
allow us to automatically parallelize the whole pipeline.<br>
<br>
Dmitri<br>
<span class="HOEnZb"><font color="#888888"><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>
_______________________________________________<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>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><font color="#000000" face="monospace" size="3">Author of the Sparkling language</font><div><font color="#000000" face="monospace" size="3"><a href="http://h2co3.org" target="_blank">http://h2co3.org/</a><br></font></div><div><font color="#000000" face="monospace" size="3"><br></font></div></div></div>
</div>