(Composing Programming Languages by Combining Action-Semantics Modules,
Kyung-Goo Doh and Peter D. Mosses)
Reuse of language functionality by combining modules of language features
and resolving conflicts in these combinations:
Hoare noted in his POPLí73 paper
Hints on programming language design
that much of programming language design is consolidation,
not innovation. In other words, a language designer
should largely utilize constructions and principles that have worked well in
earlier design projects and experiments (cf. the evident close relationship
between C and C++, C and Java). To this end, language
definitions should be modularized....
Modules for constructs stemming from the so-called Landin-Tennent design
principles (the principles of abstraction, parameterization, correspondence,
and qualification) are particularly uniform, and straightforward to combine.
is used together with a new streamlined version of action semantic notation
A simple functional expression language example
is used as a running example in a literate
programming style that intersperses code with commentary on the code.
Among the language features combined include:
"...expression bindings, expression blocks,
expression parameters, and expressions with effects,...
eager vs. lazy binding, static vs. dynamic scoping,
call-by-value vs. call-by-name parameter passing schemes,
and expressions with effects."
The later part of the paper deals with the issues of
unifying modules, module consistency, module conflicts
("when there are two different semantic equations for the same syntactic construct
in the modules to be combined"), and conditions for a language composed from modules
to be complete.
Posted to implementation by jon fernquest on 9/2/02; 9:13:52 AM