In one of the Reactive Programming Scala class on Coursera, one of the teachers said types only need to satisfy 2 of the 3 Monad laws to be useful in for comprehensions (similar to do blocks in Haskell), so it didn't actually matter whether they satisfied the 3rd law. Monads do need to have at least those 2 properties, though. (I don't remember at the moment whether it was the right or left identity law that was unnecessary)