A Monadic Multi-stage Metalanguage
Eugenio Moggi5 and Sonia Fagorzi5
| (5) |
DISI, Univ. of Genova, v. Dodecaneso 35, 16146 Genova, Italy |
Abstract
We describe a metalanguage MMML, which makes explicit the order of evaluation (in the spirit of monadic metalanguages) and
the staging of computations (as in languages for multi-level bindingtime analysis). The main contribution of the paper is
an operational semantics which is sufficiently detailed for analyzing subtle aspects of multi-stage programming, but also
intuitive enough to serve as a reference semantics. For instance, the separation of computational types from code types, makes
clear the distinction between a computation for generating code and the generated code, and provides a basis for multi-lingual extensions, where a variety of programming languages (aka monads) coexist. The operational semantics consists of two parts:
local (semantics preserving) simpli.cation rules, and computation steps executed in a deterministic order (because they may
have side-effects). We focus on the computational aspects, thus we adopt a simple type system, that can detect usual type
errors, but not the unresolved link errors. Because of its explicit annotations, MMML is suitable as an intermediate language.
Supported by MIUR project NAPOLI and EU project DART IST-2001-33477.
References secured to subscribers.