On Sun, Jun 29, 2014 at 12:11 AM, Brandon Allbery <allbery.b@gmail.com> wrote:
On Sat, Jun 28, 2014 at 10:59 PM, Rafael Almeida <almeidaraf@gmail.com> wrote:
What is there to be gained by such a law which can't be enforced by the compiler?

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?

No. I'm not trying to say Monad laws are useless or pointless. Rather, I am looking to understand the usefulness of those laws.

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.