I think the thing that’s missing in the current effect system is the types that go with them. IMO the one reason to go through all the effort of implementing algebraic effects, instead of an ad-hoc async functionality, or of the existing exception mechanism, would be to add functionality to the type system that keeps track of these effects, like in the Effekt language. When you do this then it becomes little different than what Haskellers do to keep track of effects, by modelling them via monads. But I would suspect that keeping track of effects, ie. In the way that Effekt does will be a net improvement to readability. Another example would be Java’s exception mechanism, which forces you to declare when exceptions are thrown.
It’s worth mentioning an almost identical question
Which @bluddy summed up with the answer “However, the plan is to integrate typed effects at some point, and this will solve every issue you mention.” So I sincerely hope that at some point Ocaml forces you to annotate your types with effects.