<div dir="ltr">The problem is that tAppend is too strict; it evaluates both its arguments before producing anything. This is because you are pattern matching on those arguments. You could use lazy patterns or make Temporal a newtype to avoid that. Or you could rewrite to something like<div><br></div><div>    tAppend as bs = Temporal $ toList as ++ toList bs</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Apr 26, 2015 at 11:22 AM, martin <span dir="ltr"><<a href="mailto:martin.drautzburg@web.de" target="_blank">martin.drautzburg@web.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Am 04/26/2015 um 07:05 PM schrieb Jerzy Karczmarczuk:<br>
> Martin reacts to my non-answer:<br>
<br>
</span><span class="">> Martin I sent you a private follow-up. I repeat it here.<br>
><br>
> I uncommented those lines.<br>
</span>> Your program goes until the end of the list, and returns the /*last*/  element (modified).  The form<br>
><br>
> *tBind tpr f<br>
>  ...<br>
>  (tTail tpr `tBind` f) *<br>
<span class="">><br>
> loops until ...<br>
><br>
> Now, I know about laziness... It seems that it doesn't help. Most probably your hd is simply empty, and the tail gets<br>
> stuck in an idle loop.<br>
<br>
</span>Thanks a lot for taking the time to look into my code.<br>
<br>
I had made a mistake when I stripped down my code. In tUntil the inequality is wrong. I updated the example and put it here:<br>
<br>
<a href="https://www.dropbox.com/s/836hykwhhsb0n55/Function_hanging_in_infinite_input.hs?dl=0" target="_blank">https://www.dropbox.com/s/836hykwhhsb0n55/Function_hanging_in_infinite_input.hs?dl=0</a><br>
<br>
The strange thing is: I can set an upper limit to "outer" and I get the result<br>
<br>
        Temporal [(DPast,1),(T 3,3)]<br>
<br>
When I push the upper limit to later times, the result doesn't change. This is as expected, because I am only taking<br>
everything until (T 5). It looks like Haskell doesn't know that and believes that later recursions might contribute to<br>
the result. But I don't see why. tUntil is basically an innocent takeWhile.<br>
<div class="HOEnZb"><div class="h5"><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" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Matthew Korson<br><a href="mailto:mjkorson@gmail.com" target="_blank">mjkorson@gmail.com</a></div>
</div>