Skip to main content
Log in

Control extension in a recursive language

  • Published:
BIT Numerical Mathematics Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

Bibliography

  1. Edmund C. Berkeley (ed.),The Programming Language LISP: its Operation and Applications, (March 1964), M.I.T. Press.

  2. P. J. Brown,A survey of macro processors, in Annual Review in Auto Prog., vol. 6, part 2 (1969), 37–88.

    Article  Google Scholar 

  3. Walter H. Burkhardt,PL/I: an evaluation, Datamation, (Sept. 1966), 31–38.

  4. T. E. Cheatham,The introduction of definitional facilities into higher level programming languages, Proc. AFIPS Fall Joint Comp. Conf. 29 (1964), 623–37.

    Google Scholar 

  5. T. E. Cheatham,Motivation for extensible languages, SIGPLAN Notices, (Aug. 1969), 45–49.

  6. M. E. Conway,Design of a separable transition diagram compiler, CACM 6,7 (July 1963), 396–408.

    Google Scholar 

  7. Ole-Johan Dahl and Kristen Nygaard,SIMULA: an Algol-based simulation language, CACM 9,9 (Sept. 1966), 671–678.

    Google Scholar 

  8. Richard E. Fikes,A Heuristic Program for Solving Problems Stated as Non-deterministic Problems, Ph. D. disser., Carnegie-Mellon Univ. (1969).

  9. R. W. Floyd,A survey of programming languages, IEEE PGEC 4 (Aug. 1964), 346.

    Google Scholar 

  10. R. W. Floyd,Non-deterministic algorithms, JACM 14,4 (Oct. 1967), 636–644.

    Article  Google Scholar 

  11. David Fisher,Control Structures for Programming Languages, Ph. D. disser., Carnegie-Mellon Univ. (1970).

  12. B. A. Galler and A. J. Perlis,A proposal for definitions in Algol, CACM 10,4 (Apr. 1967), 204–219.

    Google Scholar 

  13. B. M. Leavenworth,Syntax macros and extended translation, CACM 9, 11 (Nov. 1966), 790–793.

    Google Scholar 

  14. John McCarthyet. al., LISP 1.5 Programmer's Manual, M.I.T. Press (1962).

  15. Z. Manna and A. Pnueli,Formalization of properties of functional programs, JACM 17,3 (July 1970).

  16. J. Moses,The function of FUNCTION in LISP (or,why the FUNARG problem should be called the environment problem), SIGSAM Bulletin 15 (July 1970).

  17. P. Naur (ed.),Revised report on the algorithmic language Algol 60, CACM 6,1 (Jan. 1963), 1–17.

  18. Allen Newellet al., Information Processing Language V Manual, Prentice Hall, Englewood Cliffs, N.J. (1964).

    Google Scholar 

  19. Alan J. Perlis,The synthesis of algorithmic systems, JACM 14,1 (Jan. 1967), 1–9.

    Article  Google Scholar 

  20. Robert A. Saunders,LISP: on the programming system, in [1], 50–72.

  21. T. A. Standish,A. Data Definitional Facility for Programming Languages, Ph. D. disser., Carnegie-Mellon Univ. (1967).

  22. A. van Wijngaarden (ed.),Report on the algorithmic language Algol 68, Numerische Mathematik 14 (1969), 79–218.

  23. Peter Wegner,Programming Languages, Information Structures and Machine Organization, McGraw Hill, New York (1968).

    Google Scholar 

  24. Clark Weissman,LISP 1.5 Primer, Dickenson Publ. Co., Belmont Calif. (1967).

    Google Scholar 

  25. W. S. Wulf,BLISS: a language for systems programming, CACM 14,12 (Dec. 1971), 780–790.

    Google Scholar 

  26. Arne Wang and Ole-Johan Dahl,Coroutine sequencing in a block-structured environment, BIT 11 (1971), 425–449.

    Google Scholar 

  27. Charles J. Prenner, Jay M. Spitzen and Ben Wegbreit,An implementation of backtracking for programming languages, Proc. ACM Nat'l. Conf. (1972), 763–771.

  28. Charles J. Prenner,Multipath control structures for programming languages, Ph.D. disser., Harvard Univ. (1972).

  29. 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).

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints 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

Download citation

  • Received:

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF01933523

Keywords

Navigation