<p dir="ltr">Doug writes</p>
<p dir="ltr">&gt;don&#39;t belong in any stream op not called forEach</p>
<p dir="ltr">I&#39;m with you there.</p>
<p dir="ltr">Will we be able to advertise that one can easily rewrite any &#39;for&#39; loop using each()?</p>
<p dir="ltr">This is one of those useful talking points in the introductory articles: See, these new features aren&#39;t completely alien. You can take any for loop and transform it like so... If so, then forEach is an apt, intuitive name. Otherwise, some distance is needed.</p>

<p dir="ltr">Joe</p>
<div class="gmail_quote">On Mar 22, 2013 11:57 AM, &quot;Doug Lea&quot; &lt;<a href="mailto:dl@cs.oswego.edu">dl@cs.oswego.edu</a>&gt; wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="quoted-text">On 03/22/13 10:07, Joe Bowbeer wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Stateful programming has its issues but that ship has already sailed (in Java).<br>
<br>
</blockquote>
<br></div>
Although it is worth bearing in mind that most stream functionality<br>
wrt Collections exploits the fact that operations within<br>
traversals are already known to avoid some of the worst unexpected<br>
side-effects -- mutating a collection while you are traversing.<br>
Which normally leads to ConcurrentModificationExceptio<u></u>n for<br>
iterators. A variant of this is preserved when applicable<br>
in Spliterator implementations. People learn quickly to avoid them.<br>
(That&#39;s the subject of some of the specs Paul Sandoz has been<br>
adding, which can&#39;t be nailed down very well in general because<br>
they are quality-of-implementation issues, but he is trying anyway :-)<br>
<br>
Anyway, as the chief advocate for cool mutative algorithmics<br>
in this group, I&#39;m still in favor of saying they don&#39;t belong<br>
in any stream op not called forEach.<font color="#888888"><br>
<br>
-Doug<br>
<br>
<br>
</font></blockquote></div>