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), non-deterministic 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.
Similar content being viewed by others
Bibliography
Edmund C. Berkeley (ed.),The Programming Language LISP: its Operation and Applications, (March 1964), M.I.T. Press.
P. J. Brown,A survey of macro processors, in Annual Review in Auto Prog., vol. 6, part 2 (1969), 37–88.
Walter H. Burkhardt,PL/I: an evaluation, Datamation, (Sept. 1966), 31–38.
T. E. Cheatham,The introduction of definitional facilities into higher level programming languages, Proc. AFIPS Fall Joint Comp. Conf. 29 (1964), 623–37.
T. E. Cheatham,Motivation for extensible languages, SIGPLAN Notices, (Aug. 1969), 45–49.
M. E. Conway,Design of a separable transition diagram compiler, CACM 6,7 (July 1963), 396–408.
Ole-Johan Dahl and Kristen Nygaard,SIMULA: an Algol-based simulation language, CACM 9,9 (Sept. 1966), 671–678.
Richard E. Fikes,A Heuristic Program for Solving Problems Stated as Non-deterministic Problems, Ph. D. disser., Carnegie-Mellon Univ. (1969).
R. W. Floyd,A survey of programming languages, IEEE PGEC 4 (Aug. 1964), 346.
R. W. Floyd,Non-deterministic algorithms, JACM 14,4 (Oct. 1967), 636–644.
David Fisher,Control Structures for Programming Languages, Ph. D. disser., Carnegie-Mellon Univ. (1970).
B. A. Galler and A. J. Perlis,A proposal for definitions in Algol, CACM 10,4 (Apr. 1967), 204–219.
B. M. Leavenworth,Syntax macros and extended translation, CACM 9, 11 (Nov. 1966), 790–793.
John McCarthyet. al., LISP 1.5 Programmer's Manual, M.I.T. Press (1962).
Z. Manna and A. Pnueli,Formalization of properties of functional programs, JACM 17,3 (July 1970).
J. Moses,The function of FUNCTION in LISP (or,why the FUNARG problem should be called the environment problem), SIGSAM Bulletin 15 (July 1970).
P. Naur (ed.),Revised report on the algorithmic language Algol 60, CACM 6,1 (Jan. 1963), 1–17.
Allen Newellet al., Information Processing Language V Manual, Prentice Hall, Englewood Cliffs, N.J. (1964).
Alan J. Perlis,The synthesis of algorithmic systems, JACM 14,1 (Jan. 1967), 1–9.
Robert A. Saunders,LISP: on the programming system, in [1], 50–72.
T. A. Standish,A. Data Definitional Facility for Programming Languages, Ph. D. disser., Carnegie-Mellon Univ. (1967).
A. van Wijngaarden (ed.),Report on the algorithmic language Algol 68, Numerische Mathematik 14 (1969), 79–218.
Peter Wegner,Programming Languages, Information Structures and Machine Organization, McGraw Hill, New York (1968).
Clark Weissman,LISP 1.5 Primer, Dickenson Publ. Co., Belmont Calif. (1967).
W. S. Wulf,BLISS: a language for systems programming, CACM 14,12 (Dec. 1971), 780–790.
Arne Wang and Ole-Johan Dahl,Coroutine sequencing in a block-structured environment, BIT 11 (1971), 425–449.
Charles J. Prenner, Jay M. Spitzen and Ben Wegbreit,An implementation of backtracking for programming languages, Proc. ACM Nat'l. Conf. (1972), 763–771.
Charles J. Prenner,Multipath control structures for programming languages, Ph.D. disser., Harvard Univ. (1972).
B. M. Leavenworth,The definition of control structures in McG360, Research Report RC-2376, IBM Watson Research Center, Yorktown Heights, New York (Feb. 13 1969).
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Lindstrom, G. Control extension in a recursive language. BIT 13, 50–70 (1973). https://doi.org/10.1007/BF01933523
Received:
Issue Date:
DOI: https://doi.org/10.1007/BF01933523