<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">Andrei Alexandrescu wrote:<br>&gt;&gt;&gt;&gt;&gt; Is there an interest in joiner(), the corresponding function for<br>

&gt;&gt;&gt;&gt;&gt; join() that joins elements of a range in conjunction with a<br>
&gt;&gt;&gt;&gt;&gt; separator without allocating a new array?<br></div></blockquote><div><br></div><div>Seeing your code in svn, wouldn&#39;t also a flatten() (or, concat() ) function be interesting? It transforms a range of ranges (of whatever depth) into a linear range.</div>
<div><br></div><div>Also, interpose(range, element) that returns range[0], element, range[1], element, etc.</div><div>and interleave(range1, range2) that produces range1[0], range2[0], range1[1], range2[1], range1[2], ...</div>
<div><br></div><div>Isn&#39;t joiner just chain(interpose([&quot;Mary&quot;, &quot;has&quot;, &quot;a&quot;, &quot;little&quot;, &quot;lamb&quot;], &quot;...&quot;)?</div><div><br></div><div>std.range.transversal is a bit... short on this one: it just iterates through a &#39;vertical&#39; slice.</div>
<div><br></div><div><br></div><div><br></div><div>Philippe</div><div> </div></div>