[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