monad laws compile