Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456 Representing Layered Monads (abstract)
Representing Layered Monads
There has already been considerable research on constructing modular,
monad-based specifications of computational effects (state,
exceptions, nondeterminism, etc.) in programming languages. We
present a simple framework in this tradition, based on a Church-style
effect-typing system for an ML-like language. The semantics of this
language is formally defined by a series of monadic translations, each
one expanding away a layer of effects. Such a layered specification
is easy to reason about, but its direct implementation (whether by
parameterized interpretation or by actual translation) is often
prohibitively inefficient.
By exploiting deeper semantic properties of monads, however, it is also
possible to derive a vastly more efficient implementation: we show
that each layer of effects can be uniformly simulated by
continuation-passing, and further that multiple such layers can
themselves be simulated by a standard semantics for call/cc and
mutable state. Thus, even multi-effect programs can be executed in
Scheme or SML/NJ at full native speed, generalizing an earlier
single-effect result. As an example, we show how a simple
resumption-based semantics of concurrency allows us to directly
simulate a shared-state program across all possible dynamic
interleavings of execution threads.