This reply is great ! I would like to know whether algebraic effects could change the game with respect to that matter. For example, in a world where ocaml users are forbidden (by some compiler option or whatever) to use “real” side-effect and restricts themselves to algebraic effect for their need, I would expect we could get some more involved optimization from the compiler. But it also seems to me (maybe I am incorrect) that this still allows for a lot of flexibility for the user. For example, I think that implementing lazy computation is feasible with algebraic effect (I may be incorrect on that too) but it seems to me that it is as much a built-in feature of Haskell as is the IO monad (again, not sure about that). Would you be so kind as to elaborate ?