You can implement restartable conditions in a language like C++ through judicious placement of your catch clauses.
The problem is the management of such conditions is quite local. The power of the common-lisp approach is that the caller can set policies this way which makes the abstractions easier to write.
Not everybody thinks seeing things this way is a good idea. After all Lisp is a systems programming language that consists of a large number of ropes any one of which you can use to hang yourself. IMHO it remains the most powerful, programmer-time efficient and, frankly fun language I’ve ever had the pleasure of being paid to use.
C++, which I mostly use these days, similarly has a bunch of ropes-to-hang-yourself. Fewer, of course, as it isn’t as powerful, but even it seems to intimidate and enrage people.
The problem is the management of such conditions is quite local. The power of the common-lisp approach is that the caller can set policies this way which makes the abstractions easier to write.
Not everybody thinks seeing things this way is a good idea. After all Lisp is a systems programming language that consists of a large number of ropes any one of which you can use to hang yourself. IMHO it remains the most powerful, programmer-time efficient and, frankly fun language I’ve ever had the pleasure of being paid to use.
C++, which I mostly use these days, similarly has a bunch of ropes-to-hang-yourself. Fewer, of course, as it isn’t as powerful, but even it seems to intimidate and enrage people.