Abstract.Techniques for language extension are of interest today as a means for language design experimentation without language proliferation. Attention thus far has been focused on methods for data structure definition and manipulation. The problem of program control extensibility has been recognized by workers in the field but less thoroughly treated. This paper outlines an approach to control extensibility applicable on the source language level to appropriate programming languages.Using the recursive language LISP as an example, extensions are defined that provide call by name function parameters, generator functions (as in IPL-V), nondeterministic functions, and general coroutines. LISP facilitates this exercise by features including dynamic scope of variables, source programs manipulatable as data, simplicity of program state representations, and control over context of function evaluation. The results of this paper suggest criteria for evaluating base languages in extensible programming systems, as well as a possible insight into formal program analysis.
I. Language extension.
A. Rationale.Unlike natural languages, new programming languages are tantalizingly easy to create. Our appetite for new languages is whetted by the continual development of new programming problems, new modes of computing, and new computing environments. What language today is suitable for the interactive development of a system modeling urban growth to be run on a distributed computer network ?New languages cannot be welcomed, however, if their new power comes at the cost of isolation from existing languages. The concept of extensible language systems ([4], [5]) is an approach to the orderly absorption of new languages. In such systems a base language L B is equipped with a definitional component L D in which extensions are defined mapping a new language L N into L B. Brown has surveyed these systems recently [2].B. Objectives.