3 ms·
Expanding on that: the most impressive feature of CL's condition handling is that it doesn't unwind the stack for you automatically. In languages with "excepti
by jwr 6y ago
Expanding on that: the most impressive feature of CL's condition handling is that it doesn't unwind the stack for you automatically.
In languages with "exceptions", when an exception gets thrown, you have a chance to catch it, but at that point the stack has already been unwound and there is no way to resume execution at the point where exception was thrown.
In CL, you can let someone else (the caller) make the decision on what to do in case of an exception, providing options. For example, if a value is a NaN, the caller could request to continue the computation using the caller-supplied value instead.
In practical terms, this system, while very impressive, it isn't widely understood or used in CL.
It's one of the very few things I miss after I moved from CL to Clojure. Rich Hickey wrote that he did consider it, but it was a lot of complexity for fairly little gain (all platforms where Clojure is hosted support thrown exceptions only), which I would agree with.
- phoe-krk 6y ago> In practical terms, this system, while very impressive, it isn't widely understood or used in CL. I agree and wholeheartedly hope that my book mends that issue, even if just partially.