Lambda the Ultimate

inactiveTopic Composing Programming Languages by Combining Action-Semantic
started 9/2/2002; 9:08:42 AM - last post 9/2/2002; 9:08:42 AM
jon fernquest - Composing Programming Languages by Combining Action-Semantic  blueArrow
9/2/2002; 9:08:42 AM (reads: 1767, responses: 0)
Composing Programming Languages by Combining Action-Semantic
(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.

The ASF-SDF formalism is used together with a new streamlined version of action semantic notation AN-2. 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