> The best we can do is to recover from a failure and maybe somehow retry what we were doing, but we can’t magically “go back” to where we were, and do something different. But with algebraic effects, we can. This is literally Common Lisp's condition system which a) decouples signaling conditions from handling conditions, b) allows you to execute arbitrary code in the place that signals, c) allows you to stack indepe…
Common Lisp's condition system was first described in '83 for the Lisp Machine in a technical report that's hard to get one's hands on these days. It was described in an MIT AI Labs working paper a few years later by Pitman ( https://dspace.mit.edu/handle/1721.1/41474 ). Algebraic effects were introduced by Plotkin in 2001 ( https://link.springer.com/chapter/10.1007/3-540-45315-6_1 ) as an extension of Moggi's 1991 w…
The Symbolics Lisp Machine Manual from 1984 documents the condition system for the Lisp OS written in Zetalisp:
http://bitsavers.org/pdf/symbolics/software/release_5/3B_Lis...
See the chapter 'COND' in Volume 3B, 'Lisp Language'