[Haskell-cafe] lazy evaluation is not complete
Thomas Davie
tom.davie at gmail.com
Tue Feb 10 02:03:51 EST 2009
On 10 Feb 2009, at 07:57, Max Rabkin wrote:
> On Mon, Feb 9, 2009 at 10:50 PM, Iavor Diatchki
> <iavor.diatchki at gmail.com> wrote:
>> I 0 * _ = I 0
>> I x * I y = I (x * y)
>
> Note that (*) is now non-commutative (w.r.t. _|_). Of course, that's
> what we need here, but it means that the "obviously correct"
> transformation of
just to improve slightly:
I 0 |* _ = I 0
I x |* I y = I (x * y)
_ *| I 0 = I 0
I x *| I y = I (x * y)
I x * | y = (I x |* I y) `unamb` (I x *| I y)
Now it is commutative :)
Bob
More information about the Haskell-Cafe
mailing list