The Medley Interlisp Project: Reviving a Historical Software System
11 points by amoroso
11 points by amoroso
I wonder how the History and UNDO functionality worked, and to what degree it dealt with reversing side effects. To my understanding, there’s no fail-proof undo systems anywhere because not all interaction with external systems can be reversed in an unambiguous way. (Except perhaps those running on carefully managed VMs)
The Interlisp Reference Manual describes the undo facility from page 196 of the PDF.
Interesting, thanks!
So it relies on many core functions having their own “undo function” defined, and for you to be able to make your own function “undoable”
I wonder how it deals with trying to undo when your history consists of both undoable and non undoable events, and how safely the system works in practice. But that might be answered on the manual, I only gave it a quick look.
I’m also curious about which modern languages and libraries do similar stuff. Closest thing I can think of is Common Lisp’s restarts, altough it’s more of a conditon system.
Benjamin Pierce was/is working on Boomerang, lets you define bi-directional transformations. That is, you can apply the function ‘backwards’ to undo the transformation.
From what the manual says on page 197, if an event is not undoable my understanding is a warning is printed:
Only when you attempt to undo an operation does the Exec check to see whether any information has been saved. If none has been saved, and you have specifically named the event you want undone, the Exec types
nothing saved
.