I remember elsewhere on HN I got totally shat on for this analogy. The main case where this doesn’t apply is that monads can decide whether or not to execute later computations and that’s why it’s actually more general than a programmable semicolon. I think the programmable semicolon is more applicable to applicative functors than monads.