<div dir="ltr">Если левый фолд использовать, то с аккумулятором в виде массива:<div><br></div><div><table class="" style="border-collapse:collapse;border-spacing:0px;color:rgb(51,51,51);font-family:Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:13px;line-height:18.2px"><tbody><tr></tr><tr><td id="file-running_total-pl-LC23" class="" style="padding:0px 10px;vertical-align:top;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;white-space:pre;overflow:visible;word-wrap:normal">  <span class="" style="color:rgb(167,29,93)">my</span> <span class="">@rt</span>=reduce { <span class="" style="color:rgb(0,134,179)">push</span> <span class="">@$a</span>, <span class="">$a</span><span class="" style="color:rgb(167,29,93)">-></span>[-1] + <span class="">$b</span>; <span class="">$a</span> } [0], <span class="">@seq</span>;</td></tr></tbody></table><br>немного побенчмаркал</div><div><br></div><div></div><div><table class="" style="border-collapse:collapse;border-spacing:0px;color:rgb(51,51,51);font-family:Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:13px;line-height:18.2px"><tbody><tr><td id="file-running_total-pl-L44" class="" style="padding:0px 10px;width:50px;min-width:50px;white-space:nowrap;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;line-height:18px;color:rgba(0,0,0,0.298039);vertical-align:top;text-align:right;border-style:solid;border-color:rgb(238,238,238);border-width:0px 1px 0px 0px"></td><td id="file-running_total-pl-LC44" class="" style="padding:0px 10px;vertical-align:top;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;white-space:pre;overflow:visible;word-wrap:normal"><span class="" style="color:rgb(150,152,150)"></span></td></tr><tr><td id="file-running_total-pl-L45" class="" style="padding:0px 10px;width:50px;min-width:50px;white-space:nowrap;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;line-height:18px;color:rgba(0,0,0,0.298039);vertical-align:top;text-align:right;border-style:solid;border-color:rgb(238,238,238);border-width:0px 1px 0px 0px"></td><td id="file-running_total-pl-LC45" class="" style="padding:0px 10px;vertical-align:top;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;white-space:pre;overflow:visible;word-wrap:normal"><span class="" style="color:rgb(150,152,150)">         Rate scanl1 reduce    map    for</span></td></tr><tr><td id="file-running_total-pl-L46" class="" style="padding:0px 10px;width:50px;min-width:50px;white-space:nowrap;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;line-height:18px;color:rgba(0,0,0,0.298039);vertical-align:top;text-align:right;border-style:solid;border-color:rgb(238,238,238);border-width:0px 1px 0px 0px"></td><td id="file-running_total-pl-LC46" class="" style="padding:0px 10px;vertical-align:top;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;white-space:pre;overflow:visible;word-wrap:normal"><span class="" style="color:rgb(150,152,150)">scanl1 4.93/s     --   -88%   -88%   -90%</span></td></tr><tr><td id="file-running_total-pl-L47" class="" style="padding:0px 10px;width:50px;min-width:50px;white-space:nowrap;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;line-height:18px;color:rgba(0,0,0,0.298039);vertical-align:top;text-align:right;border-style:solid;border-color:rgb(238,238,238);border-width:0px 1px 0px 0px"></td><td id="file-running_total-pl-LC47" class="" style="padding:0px 10px;vertical-align:top;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;white-space:pre;overflow:visible;word-wrap:normal"><span class="" style="color:rgb(150,152,150)">reduce 41.7/s   747%     --    -2%   -19%</span></td></tr><tr><td id="file-running_total-pl-L48" class="" style="padding:0px 10px;width:50px;min-width:50px;white-space:nowrap;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;line-height:18px;color:rgba(0,0,0,0.298039);vertical-align:top;text-align:right;border-style:solid;border-color:rgb(238,238,238);border-width:0px 1px 0px 0px"></td><td id="file-running_total-pl-LC48" class="" style="padding:0px 10px;vertical-align:top;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;white-space:pre;overflow:visible;word-wrap:normal"><span class="" style="color:rgb(150,152,150)">map    42.6/s   766%     2%     --   -17%</span></td></tr><tr><td id="file-running_total-pl-L49" class="" style="padding:0px 10px;width:50px;min-width:50px;white-space:nowrap;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;line-height:18px;color:rgba(0,0,0,0.298039);vertical-align:top;text-align:right;border-style:solid;border-color:rgb(238,238,238);border-width:0px 1px 0px 0px"></td><td id="file-running_total-pl-LC49" class="" style="padding:0px 10px;vertical-align:top;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;white-space:pre;overflow:visible;word-wrap:normal"><span class="" style="color:rgb(150,152,150)">for    51.6/s   948%    24%    21%     --</span></td></tr><tr><td id="file-running_total-pl-L50" class="" style="padding:0px 10px;width:50px;min-width:50px;white-space:nowrap;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;line-height:18px;color:rgba(0,0,0,0.298039);vertical-align:top;text-align:right;border-style:solid;border-color:rgb(238,238,238);border-width:0px 1px 0px 0px"></td><td id="file-running_total-pl-LC50" class="" style="padding:0px 10px;vertical-align:top;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;white-space:pre;overflow:visible;word-wrap:normal"><span class="" style="color:rgb(150,152,150)"></span></td></tr><tr><td id="file-running_total-pl-L51" class="" style="padding:0px 10px;width:50px;min-width:50px;white-space:nowrap;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;line-height:18px;color:rgba(0,0,0,0.298039);vertical-align:top;text-align:right;border-style:solid;border-color:rgb(238,238,238);border-width:0px 1px 0px 0px"></td><td id="file-running_total-pl-LC51" class="" style="padding:0px 10px;vertical-align:top;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;white-space:pre;overflow:visible;word-wrap:normal"><br></td></tr></tbody></table><div><table class="" style="border-collapse:collapse;border-spacing:0px;color:rgb(51,51,51);font-family:Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:13px;line-height:18.2px"><tbody><tr style="line-height:18.2px"></tr><tr style="line-height:18.2px"></tr></tbody></table></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">3 декабря 2015 г., 1:25 пользователь Akzhan Abdulin <span dir="ltr"><<a href="mailto:akzhan.abdulin@gmail.com" target="_blank">akzhan.abdulin@gmail.com</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Кстати, прямой аналог почти - use List::Util qw( reduce );</div><div class="gmail_extra"><br><div class="gmail_quote">2 декабря 2015 г., 16:40 пользователь Akzhan Abdulin <span dir="ltr"><<a href="mailto:akzhan.abdulin@gmail.com" target="_blank">akzhan.abdulin@gmail.com</a>></span> написал:<div><div class="h5"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">вообще-то это типичный accumulate (в ruby - inject).<div><br></div><div>тут map имеет смысл, ибо используется возвращаемое значение (и вообще - это единственный надежный критерий).</div></div><div class="gmail_extra"><br><div class="gmail_quote">2 декабря 2015 г., 15:28 пользователь Гришаев Анатолий <span dir="ltr"><<a href="mailto:agrishaev@gmail.com" target="_blank">agrishaev@gmail.com</a>></span> написал:<div><div><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>А как бегущую сумму считать без map? for тут явно избыточен. <br></div><div>my $sum = 0;<br></div>@running_sum = map { $sum+= $_ } @item?<br></div><div class="gmail_extra"><br><div class="gmail_quote">2 декабря 2015 г., 2:03 пользователь Akzhan Abdulin <span dir="ltr"><<a href="mailto:akzhan.abdulin@gmail.com" target="_blank">akzhan.abdulin@gmail.com</a>></span> написал:<div><div><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">код должен отражать его логику. поэтому использование map - явный вред.</div><div class="gmail_extra"><br><div class="gmail_quote">26 ноября 2015 г., 6:39 пользователь Anatoly Y <span dir="ltr"><<a href="mailto:iskhartakh@gmail.com" target="_blank">iskhartakh@gmail.com</a>></span> написал:<div><div><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Иисуси, да тебя самого впору цитировать! Браво! )</div><div><div><div class="gmail_extra"><br><div class="gmail_quote">2015-11-25 22:45 GMT+06:00 Andrey Kovbovich <span dir="ltr"><<a href="mailto:akovbovich@gmail.com" target="_blank">akovbovich@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">Перефразируя тезис Черча-Тьюринга, любая вычислимая функция также вычислима на устройстве Тьюринга. Собственно функция map и оператор for эквивалентны. Предполагается что map не производит эффектов имея функциональную природу, for напротив работает непосредственно изменяя данные в памяти. То есть map он больше в контексте pipes and filters, где исходные данные иммутабнльны.</p>
<div class="gmail_quote">25 нояб. 2015 г. 2:09 PM пользователь "Ilya Chesnokov" <<a href="mailto:chesnokov.ilya@gmail.com" target="_blank">chesnokov.ilya@gmail.com</a>> написал:<div><div><br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">25 ноября 2015 г., 15:31 пользователь Ivan Petrov<br>
<<a href="mailto:i.petro.77.00@gmail.com" target="_blank">i.petro.77.00@gmail.com</a>> написал:<br>
>> Ни фига подобного. Посыл верный. Если сомневаешься - делай бенчмарки.<br>
>> Другое дело что писать их надо конкретно под свои кейсы и не обращать<br>
>> внимания на “несколько быстрее”.<br>
><br>
> в нашем мире скорость работы кода вещь конечно важная, но вторичная.<br>
> первичная вещь - это скорость/возможность работы С кодом.<br>
><br>
> людей с базовыми парадигмальными нарушениями я бы на работу не брал.<br>
> не смотря на то, что нарушения в парадигмах иногда дают более быстрый<br>
> код.<br>
<br>
Это уже Ваши личные выводы. Спасибо, что поделились, но они мало<br>
относятся к изначальному вопросу:<br>
<br>
> Вопрос в том,  какие есть подводные камни  второго метода и какой из методов быстрее и оптимальнее по памяти (обрабатывается большое количество текста в каждом элементе)<br>
<br>
ТС, имейте в виду - если будете использовать map вместо for, и<br>
наоборот, Ivan Petrov Вас на работу не возьмет. Это к вопросу о<br>
подводных камнях.<br>
<br>
А для измерения скорости используйте бенчмарк / профайлинг с реальными<br>
данными на реальном железе.<br>
<br>
> --<br>
> Moscow.pm mailing list<br>
> <a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
<br>
<br>
<br>
--<br>
Best regards,<br>
Ilya Chesnokov<br>
--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
</blockquote></div></div></div>
<br>--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
<br></blockquote></div><br></div>
</div></div><br>--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
<br></blockquote></div></div></div><br></div>
<br>--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
<br></blockquote></div></div></div><br></div>
<br>--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
<br></blockquote></div></div></div><br></div>
</blockquote></div></div></div><br></div>
<br>--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
<br></blockquote></div><br></div>