## CS 15-212: Fundamental Structures of Computer Science II |

We expand on our "purely functional" techniques by introducing methods
for designing *ephemeral data structures*, which use mutable
storage to maintain internal state. Three examples are used to
demonstrate some of the ideas. First, arrays are used to implement
generic hash tables as a functor parameterized by an abstract hashable
equality type. This closely parallels the natural implementation of
hash tables in many imperative languages. Next, we revisit the queue
data structure by defining an ephemeral queue, where the signature
clearly indicates that internal state is maintained. Our
implementation uses a pair of reference cells containing mutable
lists, and highlights some of the subtleties involved when reasoning
about references. Finally, we show how persistent data structures may
sometimes be manipulated using mutable storage by presenting a
functional version of *splay trees*, a type of self-adjusting
binary search tree.

- Ephemeral data structures
- Maintaining state with mutable storage
- Changes to signatures
- Persistent vs. ephemeral uses of data structures (multiple or single-threaded use)

John Lafferty lafferty@cs.cmu.edu