<div dir="ltr">You probably want Control.DeepSeq. No extraneous work doing addition that way either.<div><br></div><div>Will</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 12, 2016 at 11:28 PM, Christopher Howard <span dir="ltr"><<a href="mailto:ch.howard@zoho.com" target="_blank">ch.howard@zoho.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">After pondering this problem some more, I found a solution to the<br>
problem was to introduce strictness, not deep down in the StateReader<br>
monad, but rather at the top level, i.e., forcing evaluation of each<br>
Matrix as soon as it is pulled of the list of Matrices. I found I could<br>
do this simply by summing all the elements in each matrix and printing<br>
the sum to std out. With this approach, i successfully run the full<br>
program and never even saw my memory performance graph move up.<br>
<br>
I suppose there might be a way to do the same thing more efficiently<br>
with seq...?<br>
<span class="im HOEnZb"><br>
On 07/12/2016 06:39 PM, Christopher Howard wrote:<br>
> I guess I was hesitating on posting the entire program source code in an<br>
> cafe email. I suppose I could send you a tarball, if you really wanted it...<br>
><br>
> Matrix is from Data.Matrix<br>
> <<a href="http://hackage.haskell.org/package/matrix-0.3.5.0/docs/Data-Matrix.html" rel="noreferrer" target="_blank">http://hackage.haskell.org/package/matrix-0.3.5.0/docs/Data-Matrix.html</a>>.<br>
><br>
> It is hard to understand how thunks alone would explain it... there<br>
> would be at most 2000 thunks, right? Unless... Could there be a thunk<br>
> for every single call to getElem? That would be a lot of thunks!<br>
><br>
> Somebody suggested adding some strictness here... could you elaborate on<br>
> that? I tried inserting seq, but I didn't really understand how I was<br>
> supposed to use it...<br>
><br>
<br>
</span><div class="HOEnZb"><div class="h5">--<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.</div></div></blockquote></div><br></div>