https://lisp-docs.github.io/cl-language-reference/chap-9/j-b...
But while the condition system can do many things you can also do with effects, they cannot do everything.
Here's another discussion on this: https://news.ycombinator.com/item?id=44078743
Nondeterminism is not a feature you want. Algebraic effects treat the execution stack (continuation) as data, you have total freedom over what you do with it. This flexibility is exactly where you get nondeterminism. This is how logic solvers or probabilistic algorithms work, but you don't want it as a programming language feature in general purpose programming language.
By the way, nondeterminism is not the only difference between the two.
I like programming language theory as much as anyone else, but there is a reason some language features exist only so that people can blog and think about them.
I can get behind the sentiment, but you absolutely need nondeterminism. You can separate the d from the non-d, but only Haskellish languages even attempt it. It's a coarse separation to make (IO vs non-IO), which is where effect systems come in - I guess you can categorise code into more fine-grain buckets. The 'algebraic' part is currently beyond my knowledge.