<html><body><p>There's always this, for ALL types a :(&nbsp; So even where you would 
think that the documentation can claim that a given Eq instance follows 
the law of commutativity, it really cannot.<br>
</p>
<p><br>
</p>
<p>Prelude Control.Concurrent System.IO.Unsafe&gt; do m &lt;- 
newEmptyMVar ;putMVar m 1 ; print $ (unsafePerformIO (do v &lt;- 
takeMVar m; putMVar m 2; return v)) == (unsafePerformIO (do v &lt;- 
takeMVar m; putMVar m 1 ; return v)) ; print $ (unsafePerformIO (do v 
&lt;- takeMVar m; putMVar m 1; return v)) == (unsafePerformIO (do v 
&lt;- takeMVar m; putMVar m 2 ; return v))<br>
False<br>
True</p><p><br>---------- Původní zpráva ----------<br>Od: Jonas Almström Duregård &lt;jonas.duregard@chalmers.se&gt;<br>Datum: 24. 7. 2012<br>Předmět: Re: [Haskell-cafe] Is (==) commutative?</p><blockquote>Hi,<br><br>I suppose you need to define what commutativity means in the presence<br>of undefined values. For instance if error "0" is different from error<br>"1" then you do not have commutativity. Also nontermination needs to<br>be considered, for instance "(fix $ \x-&gt;x) == undefined" typically<br>fails to terminate but "undefined == (fix $ \x-&gt;x)" typically yields<br>an error.<br><br>Regards,<br>Jonas<br><br>On 24 July 2012 10:10, Christian Sternagel &lt;c.sternagel@gmail.com&gt; wrote:<br>&gt; Dear all,<br>&gt;<br>&gt; with respect to formal verification of Haskell code I was wondering whether<br>&gt; (==) of the Eq class is intended to be commutative (for many classes such<br>&gt; requirements are informally stated in their description, since Eq does not<br>&gt; have such a statement, I'm asking here). Or are there any known cases where<br>&gt; commutativity of (==) is violated (due to strictness issues)?<br>&gt;<br>&gt; cheers<br>&gt;<br>&gt; chris<br>&gt;<br>&gt; _______________________________________________<br>&gt; Haskell-Cafe mailing list<br>&gt; Haskell-Cafe@haskell.org<br>&gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br><br>_______________________________________________<br>Haskell-Cafe mailing list<br>Haskell-Cafe@haskell.org<br><a href="http://www.haskell.org/mailman/listinfo/haskell-cafe">http://www.haskell.org/mailman/listinfo/haskell-cafe</a></blockquote></body></html>