&gt; An ugly solution is to explicitly keep a<br>&gt; pointer to the next unevaluated entry, advancing it in the interleaved<br>&gt; IO operation. A leaky solution is to keep a reference to the list, and<br>&gt; force it all.
<br><br>Another way to attack this is asking: Why doesn't the simple solution work?&nbsp; That is, not using unsafeInterleaveIO.<br><br>It seems like any problem caused by not using unsafeInterleaveIO is fundamentally because the IO monad encapsulates orthogonal regions.&nbsp; Why can't I interleave fetching rows from the DB with writing each row to the console?&nbsp; Sure, it is *possible* that writing to the console is piped back into the same database, but if not, you're serializing things that don't need to be serialized.
<br><br>Thanks,<br>Greg<br><br>