<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Jun 29, 2014 at 12:11 AM, Brandon Allbery <span dir="ltr"><<a href="mailto:allbery.b@gmail.com" target="_blank">allbery.b@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class=""><div class="gmail_quote">On Sat, Jun 28, 2014 at 10:59 PM, Rafael Almeida <span dir="ltr"><<a href="mailto:almeidaraf@gmail.com" target="_blank">almeidaraf@gmail.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> What is there to be gained by such a law which can't be enforced by the compiler?</blockquote></div><br></div>There are lots of things that can't be enforced by the compiler; for example, it can't force you to write an Ord instance that implements a correct total ordering. Does this make Ord less useful to you? Or pointless?</div>

</div></blockquote><div><br></div><div>No. I'm not trying to say Monad laws are useless or pointless. Rather, I am looking to understand the usefulness of those laws.</div><div><br></div><div>People are indeed going to expect that the < operator is transitive. Even though the compiler can do nothing about it. I'm not sure how to explain why we need < to be transitive. If you do so, please explain that to me as well. I always took it for granted that such law must be obeyed.</div>

</div></div></div>