Haskell uses this call-by-name semantics, that makes it very hard to write anything but factorials, so crazy people from Glasgow invented these "monads" as an ad-hoc work around, when one needs usual call-by-value. Other than that, moands are just another incomplete interface to continuations.