
11 Mar
2012
11 Mar
'12
12:39 p.m.
On Sun, Mar 11, 2012 at 10:30 AM, Mario Blažević
It's difficult to say without having the implementation of both unawait and all the combinators in one package. I'll assume the following equations hold:
(p1 >> unawait x) >>> p2 = (p1 >>> p2) <* unawait x -- this one tripped me up
I don't think this could reasonably hold. For example, you'd expect that for any p, idP >> p == idP since idP never terminates at all. But then let p1 == idP, and you get something silly. The issue is with early termination: if p2 terminates first in the left hand side, you don't want the unawait to occur. -- Chris Smith