First of all, thanks to the people who responded :)<br clear="all"><br><div class="gmail_quote">On Sat, Aug 14, 2010 at 17:49, Christopher Lane Hinson <span dir="ltr">&lt;<a href="mailto:lane@downstairspeople.org">lane@downstairspeople.org</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im"><br>
On Sat, 14 Aug 2010, Tako Schotanus wrote:<br>
<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
I was reading this article:<br>
<br>
<a href="http://scienceblogs.com/goodmath/2009/11/writing_basic_functions_in_has.php" target="_blank">http://scienceblogs.com/goodmath/2009/11/writing_basic_functions_in_has.php</a><br>
<br>
And came to the part where it shows:<br>
<br>
<br>
&gt; fiblist = 0 : 1 : (zipWith (+) fiblist (tail fiblist))<br>
<br></div><div class="im">
But then I read that &quot;Once it&#39;s been referenced, then the list up to where you looked is concrete - the<br>
computations won&#39;t be repeated.&quot;<br>
</div></blockquote>
<br>
It is so implemented.  If you *really* wanted a weak reference that could be<br>
garbage collected and rebuilt (you don&#39;t), it could be made to happen.</blockquote><div><br></div><div>I understand, if you don&#39;t want to keep the memory tied up you either define the reference locally or you use another algorithm.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
and I started wondering how that works.<br>
Because this seems to mean that functions could have unknown (to the caller) memory requirements.<br>
</blockquote>
<br></div>
This is true in any programming language or runtime.  Nothing special<br>
has happened: you could implement the same thing in C/C++/Java/Python,<br>
but it would take 10-100 lines of code.<div class="im"><br></div></blockquote><div><br></div><div>Sure, although the memory use would normally be more obvious and it would actually be more work to make the result globally permanent.</div>

<div>(the difference between the 10 lines and the 100 lines you refer to probably)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
How does one, programming in Haskell, keep that in check?<br>
And when does that memory get reclaimed?<br>
</blockquote>
<br></div>
Haskell is garbage collected, as soon as the fiblist is not longer reachable,<br>
and the runtime wants to reclaim the memory, it will.<br>
<br>
If fiblist is a top-level declaration it will always be reachable.<br></blockquote><div><br></div><div>Ok, makes sense.</div><div><br></div><div>Just to make this clear, I&#39;m not complaining nor suggesting there is anything wrong with the way Haskell does things (minds immeasurably superior to mine working on this stuff, I&#39;m not going to pretend to know better), it&#39;s just one of those &quot;surprises&quot; for somebody who has no experience yet with Haskell.</div>

<div><br></div><div>Thanks,</div><div> -Tako</div><div><br></div></div>