On Tue, 2009-02-10 at 08:03 +0100, Thomas Davie wrote: > On 10 Feb 2009, at 07:57, Max Rabkin wrote: > > > On Mon, Feb 9, 2009 at 10:50 PM, Iavor Diatchki > > <iavor.diatc...@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
See `parCommute` from the 'lub' package :)
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe