If monads are the solution, what is the problem?
A side point since the author pointed to Agda as being more pure than Haskell:<p>In many practical situations, computations have deadlines, which may either be a timeout or the user giving up and cancelling. Languages that guarantee that functions terminate aren&#x27;t as useful as you might guess, because they don&#x27;t say anything about how long it will take. (It could be millions of years.)<p>A guarantee that a function will terminate is useful when you can avoid evaluating the function at all, while relying on a function call&#x27;s existence (without compile errors) as a proof that the result exists.<p>It&#x27;s not too often that you want to know that an answer exists without knowing the answer. This mostly comes up in mathematics when proving things.