<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><span style="font-family:arial,sans-serif;color:rgb(34,34,34)">On Fri, Nov 10, 2017 at 11:44 AM, Nicolas Cellier </span><span dir="ltr" style="font-family:arial,sans-serif;color:rgb(34,34,34)"><<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmail.com</a>></span><span style="font-family:arial,sans-serif;color:rgb(34,34,34)"> wrote:</span><br></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="gmail-">2017-11-10 10:53 GMT+01:00 Tobias Pape <span dir="ltr"><<a href="mailto:Das.Linux@gmx.de" target="_blank">Das.Linux@gmx.de</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span><br>
> On 10.11.2017, at 08:00, Nicolas Cellier <<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmai<wbr>l.com</a>> wrote:<br>
><br>
> But old implementation was a to:do: loop on indices with (self tempAt: i)<br>
> So we already pay the price of low level procedural style,<br>
> why having to pay the stream overhead?<br>
> It makes code more convoluted than necessary (a higher level dsiguise)<br>
><br>
> Or should we rewrite most of SequenceableCollection protocol?<br>
><br>
<br>
</span>I don't get it.<br>
<br>
Best regards<br>
<span class="gmail-m_153673898162997722HOEnZb"><font color="#888888">        -Tobias<br>
</font></span><div class="gmail-m_153673898162997722HOEnZb"><div class="gmail-m_153673898162997722h5"><br></div></div></blockquote><div><br></div></span><div>Hi Tobias,<br></div><div>I say that the main interest of stream is to release you from direct index manipulation</div><div>which are considered as lower level implementation details</div><div><br></div><div>The code below is just doing a copy.</div><div>It was done with low level index iteration on one side for reading,</div><div>and invoking higher level stream on the other side for writing,</div><div>despite the fact that the low level indices would perfectly match...</div><div><br></div><div>We are thus complexifying the code un-necessarily by using two concepts where a single one would have been enough.</div><div>Incidentally, code was less efficient, but I don't know if we ever have to care (maybe Eliot cares for VM simulation).</div><div><br></div><div>So that's why I call this a higher level disguise: it's fake since we continue manipulating low level indices.<br></div><div><br></div><div>SequenceableCollection if full of those low level iterations on indices, but there it's mainly for the sake of speed/efficiency.</div></div></div></div></blockquote><div><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">​+1</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">The streamContents: variant is both inefficient and inelegant.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px"><br></span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px">Eliot's version is inelegant too, but efficient.</span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px"><br></span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px">This one would be elegant but inefficient, as mentioned in Eliot's comment:</span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px"><br></span></div><div class="gmail_default"><span style="font-size:12.8px">arguments</span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px">      ^(1 to: self numArgs) collect: [:i | self tempAt: i]</span><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">If we wanted it to be elegant and efficient, we would have to write it like</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><div class="gmail_default" style="color:rgb(34,34,34);font-family:arial,sans-serif"><span style="font-size:12.8px">arguments</span></div><div class="gmail_default"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px">      ^1 to: self numArgs collect: [:i | self tempAt: i]</span><br></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px"><br></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px">... and expand to:collect: in the Compiler just like #to:do: is expanded. </span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px"><br></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px">I have wished for a to:collect: method numerous times, maybe we do actually want this?</span></div></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">- Bert -​</div></div></div></div>