Persistence+undoability=transactions

Abstract
Persistence means objects live potentially forever. Undoability means that any change to a program's store can potentially be undone. In their design and implementation of support for single-threaded nested transactions in Standard ML of New Jersey (SML/NJ), the authors provide persistence and undoability as orthogonal features and combine them in a simple and elegant manner. They provide support for persistence through an SML interface that lets users manipulate a set of persistent roots and provides a save function that causes all data reachable from the persistent roots to be moved into the persistent heap. They provide support for undoability through an SML interface that exports two functions: checkpoint, which checkpoints the current store, and restore, which undoes all changes made to the previously checkpointed store. Finally, they succinctly define a higher-order function transact completely in terms of the interfaces for persistence and undoability.

This publication has 17 references indexed in Scilit: