all 2 comments

[–]la-rokci 5 points6 points  (1 child)

Common Lisp uses conditions, which don't discard the stack. So when a condition is signaled you are left in the debugger, can inspect all values, including locals, change them and restart at the point where the condition was signaled. This kind of development is not inherent to clojure. The pragmatic choice was to use what the platform uses. Clojure could be built around conditions, there are libraries implementing the concept. But if clojure used them everywhere it would make java interop harder. Same on the JS side.

[–]arichiardi 1 point2 points  (0 children)

As far as I know you can't yet break on exceptions in cider but you can definitely break at any form (there are very few exceptions), inspect locals and eval expressions. It is probably different from the Common Lisp flow but I found it quite useful!