Thesis — 01
Every running system is a private library of states — a quiet collection of versions of itself. To undo is not to erase, but to remember well: to keep enough of the past on hand that the present is never the only option.
A field guide to reversible computing.
Notes from a long afternoon in the library.
Thesis — 01
Every running system is a private library of states — a quiet collection of versions of itself. To undo is not to erase, but to remember well: to keep enough of the past on hand that the present is never the only option.
Two states & the thread between. The undo path is the dotted one.
II.
i.
A reversible system keeps a journal — not for nostalgia, but for navigation. The journal must be append-only, append-cheap, and read-friendly.
ii.
For every action there must be an inverse, or a sufficient reconstruction. Where neither is possible, the action is a commitment, and must be marked as such.
iii.
An undo system rewards patience. The user need not race the system; the system has waited.
III.
interface UndoableSystem<S, A> {
apply(state: S, action: A): S;
invert(action: A): A | null;
journal: Journal<A>;
}