&gt; Well for me the value of using a monad to capture an effect is to be able to verify that I&#x27;ve sequenced that effect correctly at compile time.<p>&gt; I do prefer to have a type system which verifies the monad laws at compile time, and I do think that the stronger the enforcement around the monad system, the more worthwhile it becomes to manage a given effect explicitly.<p>That&#x27;s an advantage of having a type system, not of having monads. There are other ways to type-check effects without monads (at least not explicit monads, and the monad laws don&#x27;t need to be checked): <a href="http:&#x2F;&#x2F;blog.paralleluniverse.co&#x2F;2015&#x2F;08&#x2F;07&#x2F;scoped-continuations&#x2F;" rel="nofollow">http:&#x2F;&#x2F;blog.paralleluniverse.co&#x2F;2015&#x2F;08&#x2F;07&#x2F;scoped-continuati...</a>