Technical Report (TR95-10) Cover Page
Department of Information Science,
Faculty of Science, University of Tokyo
Partial Evaluator as a Compiler for Reflective Languages
Kenichi Asai, Hidehiko Masuhara, Satoshi Matsuoka, and Akinori Yonezawa
- Key words and phrases:
partial evaluation, reflection, preaction, I/O-type side-effects
This paper presents an online partial evaluator with a mechanism
to handle I/O-type side-effects using preactions, and
reports our experiment of using the partial evaluator as a
compiler for the reflective language Black we are designing.
Black is a Scheme-based reflective language, which allows user
programs to access and modify its metalevel interpreter (or the
language semantics) from within the same language framework.
Because the semantics may change during computation, it is impossible to
compile using a conventional Scheme compiler.
To cope with this flexibility, we implemented an online partial evaluator,
and specialized a Scheme meta-circular interpreter with respect to a
modified interpreter to obtain an efficient version of the modified
The resulting interpreter turns out to be quite efficient in that it
is almost identical to the original Scheme interpreter, except that it
correctly reflects the modification made by users.
In fact, we got more: by supplying a specific user program, we obtained
a compiled program under the modified language semantics.
- Report date:
December 13, 1995
- Written language:
- Total number of pages:
- Number of references:
- Any other identifying information of this report:
- Distribution statement:
First issue 35 copies.
- Supplementary notes: