Haskell is lazy evaluated. So data isn't "dropped" until all the thunks that use it are evaluated. <br><br>Play around with foldl and foldl'. The strict evaluation of the accumulator in foldl' prevents a large thunk from forming and eating up all the memory<br><br><br><div class="gmail_quote"><div dir="ltr">On Sun, Jul 10, 2016 at 10:26 AM Will Yager <<a href="mailto:will.yager@gmail.com">will.yager@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I'm not an expert here, but the GC should not allow that to happen if you were truly no longer using the elements. Most likely you have a dangling reference to the list head or something. Please post your code.<br>
<br>
Will<br>
<br>
> On Jul 10, 2016, at 11:41, Christopher Howard <<a href="mailto:ch.howard@zoho.com" target="_blank">ch.howard@zoho.com</a>> wrote:<br>
><br>
> Hi, short version of the question: when elements are 'drop'ped from a<br>
> list, when is the memory for those elements released? And is there some<br>
> way to control that?<br>
><br>
> Longer version: I have this situation where I've got a State monad<br>
> carrying a Data.Matrix, and I...<br>
><br>
> 1) generate in infinite list of monadic operations with (repeat mf)<br>
> where mf is a monadic function.<br>
> 2) 'sequence' (from Control.Monad) to get a monad containing the<br>
> infinite list of all states (i.e., a list of Matrices).<br>
> 3) evalState(T) to extract the list<br>
> 4) extract the nth state with (head (drop (n-1)))<br>
><br>
> I like this approach. However, there seems to be a memory management<br>
> issue: a Matrix itself should only be, I'm guessing, somewhere around<br>
> 100KB. But instead I'm maxing out the 3GB of RAM on my old T60 laptop.<br>
> Maybe I'm generating list elements (Matrices) a lot faster than memory<br>
> management is releasing them...?<br>
><br>
> --<br>
> <a href="http://qlfiles.net" rel="noreferrer" target="_blank">http://qlfiles.net</a><br>
> To protect my privacy, please use PGP encryption. It's free and easy<br>
> to use! My public key ID is 0x340EA95A (<a href="http://pgp.mit.edu" rel="noreferrer" target="_blank">pgp.mit.edu</a>).<br>
><br>
> _______________________________________________<br>
> Haskell-Cafe mailing list<br>
> To (un)subscribe, modify options or view archives go to:<br>
> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
> Only members subscribed via the mailman list are allowed to post.<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div>