<p>One thing you can try is access current garbage collector stats by using the GHC.Stats library. I don't know how that mingles with multiple threads and I don't think it's very precise, but it sounds simple enough.</p>
<p>You just have to start GHC with stats enabled. Afterwards, you can check if they are enabled with getGCStatsEnabled and get a record of stats with getGCStats. Then experiment away with the entries of that record.</p>
<p>Hope that helps.</p>
<div class="gmail_quote">Am 20.01.2016 15:53 schrieb "Johannes Waldmann" <<a href="mailto:johannes.waldmann@htwk-leipzig.de">johannes.waldmann@htwk-leipzig.de</a>>:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Dear cafe, how would you approach this task:<br>
<br>
find (enumerate) those  x from a list  xs<br>
  for which some computation is not successful<br>
     within some resource bound<br>
<br>
(it weeds out uninteresting data, leaving just the hard cases,<br>
which will be treated later by other means)<br>
Input and result could be lazy lists, computations are pure.<br>
<br>
If the bounded resource is time, then I can use System.Timeout.<br>
This puts me into IO, but OK.<br>
Perhaps I want to do some logging output anyways.<br>
<br>
The problem is with bounding space.<br>
Assume that "computation on x" (sometimes) allocates a lot.<br>
Then the whole program will just die with "heap exhausted",<br>
while in fact I want to terminate just the computation on<br>
this x, garbage-collect, and continue.<br>
<br>
I could make the space usage explicit:<br>
each step of the computation could additionally<br>
compute a number that approximates memory usage.<br>
(Assume that this usage varies wildly with each step.)<br>
Then I can stop iterating when this reaches some bound.<br>
<br>
Or, I just compile the computation into a separate executable,<br>
and I call it (for each x) via the operating system,<br>
because there I can bound space (with  ulimit)<br>
<br>
Is there some way to achieve this in Haskell land?<br>
<br>
- J.W.<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><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>
</blockquote></div>