The categorical notion of monad was first introduced into computer science as a way of structuring mathematical models of programming languages. The idea has subsequently been transferred back into computing practice, influencing the design of widely-used languages and frameworks. Expressions in conventional imperative programming languages bear a superficial similarity to conventional mathemat...