> Conditions and restarts are kind of like try/throw exception handling you know from more mainstream languages, except much more powerful.
This reminds me of the arguments for call/cc in scheme. A very general construct! It can implement exceptions, backtracking, it can even implement "if", so "if" wouldn't even need to be primitive. You know what else lets you do all that? Good old GOTO.
I don't care about "power" for a language construct. I need guarantees a lot more. Does using this construct allow me to put some things in the "that doesn't matter here" bin, so I can focus on some things without worrying about everything at once? GOTO is better at punching holes in bins of compartmentalization, and call/cc isn't much better.
I don't know much about algebraic effects, but usually "algebraic" implies various guarantees about composability and idempotence, which are exactly what you want when dealing with state and the world.
This reminds me of the arguments for call/cc in scheme. A very general construct! It can implement exceptions, backtracking, it can even implement "if", so "if" wouldn't even need to be primitive. You know what else lets you do all that? Good old GOTO.
I don't care about "power" for a language construct. I need guarantees a lot more. Does using this construct allow me to put some things in the "that doesn't matter here" bin, so I can focus on some things without worrying about everything at once? GOTO is better at punching holes in bins of compartmentalization, and call/cc isn't much better.
I don't know much about algebraic effects, but usually "algebraic" implies various guarantees about composability and idempotence, which are exactly what you want when dealing with state and the world.