<br><font size=2 face="sans-serif">maybe Debug.Trace? like...</font>
<br>
<br><font size=2 face="Courier New">import Debug.Trace</font>
<br>
<br><font size=2 face="Courier New">t = foldr debugf 0 [1..10000]</font>
<br>
<br><font size=2 face="Courier New">f :: Int -&gt; Int -&gt; Int</font>
<br><font size=2 face="Courier New">f = (+)</font>
<br>
<br><font size=2 face="Courier New">-- same typesig as f</font>
<br><font size=2 face="Courier New">debugf :: Int -&gt; Int -&gt; Int</font>
<br><font size=2 face="Courier New">debugf x y | y `mod` 1000 == 0 = x
+ (trace (show y) y)</font>
<br><font size=2 face="Courier New">debugf x y = x + y</font>
<br><font size=2 face="Courier New">&nbsp;</font>
<br><font size=2 face="sans-serif">t.</font>
<br>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Andrew Coppin &lt;andrewcoppin@btinternet.com&gt;</b>
</font>
<br><font size=1 face="sans-serif">Sent by: haskell-cafe-bounces@haskell.org</font>
<p><font size=1 face="sans-serif">11/28/2007 05:03 PM</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">haskell-cafe@haskell.org</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">[Haskell-cafe] Progress indications</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><tt><font size=2>In a &quot;normal&quot; programming language, you
might write something like this:<br>
<br>
 &nbsp;for x = 1 to 1000000<br>
 &nbsp; &nbsp;print x<br>
 &nbsp; &nbsp;...do slow complex stuff...<br>
 &nbsp;next x<br>
<br>
In Haskell, you're more likely to write something like<br>
<br>
 &nbsp;result k = filter my_weird_condition $ map strange_conversion $
<br>
unfoldr ...<br>
<br>
That means that when you try to process the result, lots of processing
<br>
happens, and your program just appears to lock up until a result is <br>
produced. So, like, how do you make it so that some kind of progress <br>
information is output while it's working? (Aside from dunking everything
<br>
into the IO monad and ruining all your beautiful abstractions.) There <br>
doesn't seem to be a clean solution to this one...<br>
<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
Haskell-Cafe@haskell.org<br>
http://www.haskell.org/mailman/listinfo/haskell-cafe<br>
</font></tt>
<br>
<br>
<span style="font-family:sans-serif,helvetica; font-size:10pt; color:#000000">---</span><br>
<br>
<span style="font-family:sans-serif,helvetica; font-size:10pt; color:#000000">This e-mail may contain confidential and/or privileged information. If you </span><br>
<span style="font-family:sans-serif,helvetica; font-size:10pt; color:#000000">are not the intended recipient (or have received this e-mail in error) </span><br>
<span style="font-family:sans-serif,helvetica; font-size:10pt; color:#000000">please notify the sender immediately and destroy this e-mail. Any </span><br>
<span style="font-family:sans-serif,helvetica; font-size:10pt; color:#000000">unauthorized copying, disclosure or distribution of the material in this </span><br>
<span style="font-family:sans-serif,helvetica; font-size:10pt; color:#000000">e-mail is strictly forbidden.</span><br>