Using monadic reflection to characterize concisely all effects
expressible with a given monad, we can give a precise meaning to the
notion of *simulating* one effect by another, more general
one. We isolate a simple condition allowing such a simulation, and in
particular show that any monadic effect can be simulated by a
continuation monad. In other words, under relatively mild assumptions
on the base language (allowing formation of a suitably large answer
type), control becomes a *universal effect*.

Concluding the development, we show that this universal effect can
itself be explicitly implemented in terms of only standard first-class
continuations (`call/cc`) and a piece of global state. This
means that we can specify an effect such as nondeterminism abstractly,
in terms of result lists, then directly obtain from this description a
nondeterministic-choice operator performing imperatively-implemented
backtracking. We include a full realization of the general construction
in Standard ML of New Jersey, and give several programming examples.

Full document: DVI or PostScript.