<div dir="ltr"><div>Hello Emanuel,<br><br></div><div>Here&#39;s the excerpt of the &quot;reverse&quot; function in GHC-List   (<br><br><pre><a name="line-414"></a><a name="reverse"></a><span class="">-- | &#39;reverse&#39; @xs@ returns the elements of @xs@ in reverse order.</span>
<a name="line-415"></a><span class="">-- @xs@ must be finite.</span>
<a name="line-416"></a><span class="">reverse</span>                 <span class="">::</span> <span class="">[</span><span class="">a</span><span class="">]</span> <span class="">-&gt;</span> <span class="">[</span><span class="">a</span><span class="">]</span>
<a name="line-417"></a><span class="">#ifdef USE_REPORT_PRELUDE</span>
<a name="line-418"></a><span class="">reverse</span>                 <span class="">=</span>  <span class="">foldl</span> <span class="">(</span><span class="">flip</span> <span class="">(</span><span class="">:</span><span class="">)</span><span class="">)</span> <span class="">[]</span>
<a name="line-419"></a><span class="">#else</span>
<a name="line-420"></a><span class="">reverse</span> <span class="">l</span> <span class="">=</span>  <span class="">rev</span> <span class="">l</span> <span class="">[]</span>
<a name="line-421"></a>  <span class="">where</span>
<a name="line-422"></a>    <span class="">rev</span> <span class="">[]</span>     <span class="">a</span> <span class="">=</span> <span class="">a</span>
<a name="line-423"></a>    <span class="">rev</span> <span class="">(</span><span class="">x</span><span class="">:</span><span class="">xs</span><span class="">)</span> <span class="">a</span> <span class="">=</span> <span class="">rev</span> <span class="">xs</span> <span class="">(</span><span class="">x</span><span class="">:</span><span class="">a</span><span class="">)</span>
<a name="line-424"></a><span class="">#endif</span><span class=""><br><br></span></pre><pre><span class="">Reversing an infinite list, Haskell will try to reach the end of the list until it runs out of memory.<br>I don&#39;t thing it&#39;s doable lazily.<br>

</span></pre><br></div><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Dec 18, 2012 at 9:24 AM, Emanuel Koczwara <span dir="ltr">&lt;<a href="mailto:poczta@emanuelkoczwara.pl" target="_blank">poczta@emanuelkoczwara.pl</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
  When I run this code in ghci:<br>
<br>
    reverse [1..]<br>
<br>
  I get:<br>
<br>
    &lt;interactive&gt;: out of memory (requested 2097152 bytes)<br>
<br>
  Can anyone explain this behaviour?<br>
<br>
Emanuel<br>
<br>
<br>
<br>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/beginners" target="_blank">http://www.haskell.org/mailman/listinfo/beginners</a><br>
</blockquote></div><br></div></div></div></div>