Tinkertoy(Trade Name) Transactions

Abstract : This document describes the design of a transaction facility for a language that supports higher-order functions. We factor transactions into four separable features; persistence, undoability, locking, and threads. Then, relying on function composition, we show how we can put them together again. Our 'Tinkertoy' approach towards building transactions enables us to construct a model of concurrent, nested, multi-threaded transactions, as well as other non- traditional models where not all natures of transactions are present. Key to our approach is the use of higher-order functions to make transactions first-class. Not only do we get clean composability of transactional features, but also we avoid the need to introduce special control and block-structured constructs as done in more traditional transactional systems. We implemented our design in Standard ML of New Jersey.