<div dir="ltr"><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> написал:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>А как бегущую сумму считать без map? for тут явно избыточен. <br></div><div></div></blockquote></div><br>Кое-где для этого используют ф-цию scanl (<a href="https://mail.haskell.org/pipermail/haskell-cafe/2004-July/006361.html">https://mail.haskell.org/pipermail/haskell-cafe/2004-July/006361.html</a>)</div><div class="gmail_extra"><br></div><div class="gmail_extra">вот так как-то:</div><div class="gmail_extra"><br></div><div class="gmail_extra"><pre style="margin-top:0px;margin-bottom:0px;padding:0px;font-family:Consolas,Menlo,'Liberation Mono',Courier,monospace;font-size:12px;line-height:1.4;color:rgb(51,51,51)"><span class="" style="font-weight:700">sub </span><span class="" style="color:rgb(153,0,0);font-weight:700">scanl</span> <span class="">{</span>
<a name="snippet.pl-2" style="color:rgb(53,114,176)"></a>    <span class="" style="font-weight:700">my</span><span class="">(</span><span class="" style="color:teal">$f</span><span class="">,</span> <span class="" style="color:teal">$y</span><span class="">,</span> <span class="" style="color:teal">@lst</span><span class="">)</span> <span class="" style="font-weight:700">=</span> <span class="" style="color:teal">@_</span><span class="">;</span>
<a name="snippet.pl-3" style="color:rgb(53,114,176)"></a>    <span class="" style="color:teal">@lst</span> <span class="">?</span> <span class="">(</span><span class="" style="color:teal">$y</span><span class="">,</span> <span class="">scanl</span><span class="">(</span><span class="" style="color:teal">$f</span><span class="">,</span> <span class="" style="color:teal">$f</span><span class="" style="font-weight:700">-></span><span class="">(</span><span class="" style="color:teal">$y</span><span class="">,</span> <span class="" style="color:rgb(153,153,153)">shift</span><span class="">(</span><span class="" style="color:teal">@lst</span><span class="">)),</span> <span class="" style="color:teal">@lst</span><span class="">))</span> <span class="">:</span> <span class="">(</span><span class="" style="color:teal">$y</span><span class="">);</span>
<a name="snippet.pl-4" style="color:rgb(53,114,176)"></a><span class="">}</span>
<a name="snippet.pl-5" style="color:rgb(53,114,176)"></a><span class="" style="font-weight:700">sub </span><span class="" style="color:rgb(153,0,0);font-weight:700">scanl1</span><span class="">(&@) {</span>
<a name="snippet.pl-6" style="color:rgb(53,114,176)"></a>    <span class="" style="font-weight:700">my</span><span class="">(</span><span class="" style="color:teal">$f</span><span class="">,</span> <span class="" style="color:teal">@lst</span><span class="">)</span> <span class="" style="font-weight:700">=</span> <span class="" style="color:teal">@_</span><span class="">;</span>
<a name="snippet.pl-7" style="color:rgb(53,114,176)"></a>    <span class="" style="color:teal">@lst</span> <span class="">?</span> <span class="">scanl</span><span class="">(</span><span class="" style="color:teal">$f</span><span class="">,</span> <span class="" style="color:rgb(153,153,153)">shift</span><span class="">(</span><span class="" style="color:teal">@lst</span><span class="">),</span> <span class="" style="color:teal">@lst</span><span class="">)</span> <span class="">:</span> <span class="">();</span>
<a name="snippet.pl-8" style="color:rgb(53,114,176)"></a><span class="">}</span>
<a name="snippet.pl-9" style="color:rgb(53,114,176)"></a>
<a name="snippet.pl-10" style="color:rgb(53,114,176)"></a><span class="" style="font-weight:700">my</span> <span class="" style="color:teal">@seq</span> <span class="" style="font-weight:700">=</span> <span class="">(</span><span class="" style="color:rgb(0,153,153)">1</span><span class="" style="font-weight:700">..</span><span class="" style="color:rgb(0,153,153)">10</span><span class="">);</span>
<a name="snippet.pl-11" style="color:rgb(53,114,176)"></a><span class="" style="font-weight:700">my</span> <span class="" style="color:teal">@rt</span> <span class="" style="font-weight:700">=</span> <span class="">scanl1</span> <span class="">{</span>
<a name="snippet.pl-12" style="color:rgb(53,114,176)"></a>    <span class="" style="color:teal">$_</span><span class="">[</span><span class="" style="color:rgb(0,153,153)">0</span><span class="">]</span> <span class="" style="font-weight:700">+</span> <span class="" style="color:teal">$_</span><span class="">[</span><span class="" style="color:rgb(0,153,153)">1</span><span class="">]</span>
<a name="snippet.pl-13" style="color:rgb(53,114,176)"></a><span class="">}</span> <span class="" style="color:teal">@seq</span><span class="">;</span>
<a name="snippet.pl-14" style="color:rgb(53,114,176)"></a>
<a name="snippet.pl-15" style="color:rgb(53,114,176)"></a><span class="" style="font-weight:700">use</span> <span class="">DDP</span><span class="">;</span> <span class="">p </span><span class="" style="color:teal">@rt</span><span class="">;</span></pre><pre style="margin-top:0px;margin-bottom:0px;padding:0px;font-family:Consolas,Menlo,'Liberation Mono',Courier,monospace;font-size:12px;line-height:1.4;color:rgb(51,51,51)"><span class=""><br></span></pre></div></div>