Advertisement

LISP and Symbolic Computation

, Volume 6, Issue 3–4, pp 259–287 | Cite as

Lambda-calculus schemata

  • Michael J. Fischer
Article

Abstract

A lambda-calculus schema is an expression of the lambda calculus augmented by uninterpreted constant and operator symbols. It is an abstraction of programming languages such as LISP which permit functions to be passed to and returned from other functions. When given an interpretation for its constant and operator symbols, certain schemata, calledlambda abstractions, naturally define partial functions over the domain of interpretation. Two implementation strategies are considered: the retention strategy in which all variable bindings are retained until no longer needed (implying the use of some sort of garbage-collected store) and the deletion strategy, modeled after the usual stack implementation of ALGOL 60, in which variable bindings are destroyed when control leaves the procedure (or block) in which they were created. Not all lambda abstractions evaluate correctly under the deletion strategy. Nevertheless, both strategies are equally powerful in the sense that any lambda abstraction can be mechanically translated into another that evaluates correctly under the deletion strategy and defines the same partial function over the domain of interpretation as the original. Proof is by translation into continuation-passing style.

Keywords

Lambda Calculus LISP Continuation-Passing Style Closures Functional Objects Retention Strategy Deletion Strategy Bindings Stack 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Berry, Daniel M. Introduction to Oregano.SIGPLAN Notices, 6, 2 (February 1971) 171-190.Google Scholar
  2. 2.
    Berry, Daniel M. Block structure: Retention or deletion. InProceedings of the Third Annual ACM Symposium on Theory of Computing (1972) 86–100.Google Scholar
  3. 3.
    Chandra, Ashok K.On the Properties and Applications of Program Schemas. PhD thesis, Computer Science Department, Stanford University (1973). Also appears as Report No. CS-336, AI-188 (February 1973).Google Scholar
  4. 4.
    Church, Alonzo.The Calculi of Lambda-Conversion. Annals of Mathematics Studies. Princeton University Press, Princeton, New Jersey (1941).Google Scholar
  5. 5.
    Cole, Steven N. Pushdown store machines and real-time computation. InProceedings of the [First Annual] ACM Symposium on Theory of Computing (1969) 233–245.Google Scholar
  6. 6.
    Cooper, D. Mathematical proofs about computer programs. InMachine Intelligence 1, Oliver and Boyd (1967) 17–28.Google Scholar
  7. 7.
    Danvy, Olivier and Filinski, Andrzej. Representing control, a study of the CPS transformation.Mathematical Structures in Computer Science, 2, 4 (December 1992) 361–391.Google Scholar
  8. 8.
    Dijkstra, Edsgar W. Recursive programming. In Rosen, S., editor.Programming Systems and Languages, McGraw-Hill, New York (1967).Google Scholar
  9. 9.
    Evans, Arthur. PAL—a language designed for teaching programming linguistics. InProceedings of the ACM 23rd National Conference (August 1968).Google Scholar
  10. 10.
    Friedman, Daniel P. and Felleisen, Matthias.The Little LISPer. The MIT Press, trade edition (1988) chapter 9, 156–157.Google Scholar
  11. 11.
    Ginsburg, Seymour, Greibach, Sheila, and Harrison, Michael. One-way stack automata.Journal of the ACM, 14, 2 (April 1967) 389–418.Google Scholar
  12. 12.
    Henhapl, W. and Jones, C. D.The Block Concept and Some Possible Implementations, with Proofs of Equivalence. Technical Report TR. 25.104, IBM Vienna (April 1970).Google Scholar
  13. 13.
    Hewitt, Carl. (1970). Personal communication.Google Scholar
  14. 14.
    Hewitt, Carl.More Comparative Schematology. Artificial intelligence Memo 207, M.I.T. Project MAC (August 1970).Google Scholar
  15. 15.
    Ianov, Iu. The logical schemes of algorithms (Russian).Problems of Cybernetics, 1 (1958) 75–127. English translation: Pergamon Press Ltd., 1960, pp. 82–140.Google Scholar
  16. 16.
    Landin, Peter J. The mechanical evaluation of expressions.The Computer Journal, 6, 4 (January 1964).Google Scholar
  17. 17.
    Luckham, David C., Park, David M. R., and Paterson, Michael S. On formalised computer programs.Journal of Computer and System Sciences, 4, 3 (June 1970) 220–249.Google Scholar
  18. 18.
    Manna, Zohar. Program schemas. In Aho, Alfred V., editor,Currents in the Theory of Computing, Prentice-Hall, Inc. (1973) 90–142.Google Scholar
  19. 19.
    Mazurkiewicz, Antoni W. Proving algorithms by tail functions.Information and Control, 18, 3 (April 1971) 220–226.Google Scholar
  20. 20.
    McCarthy, John. A basis for a mathematical theory of computation. In Braffort, P. and Hirschberg, D., editors,Computer Programming and Formal Systems, North-Holland, Amsterdam (1963).Google Scholar
  21. 21.
    McCarthy, Johnet al. The LISP 1.5 Programmers Manual. M.I.T. Press (1963).Google Scholar
  22. 22.
    Moon, David A.MACLISP Reference Manual, revision 0. Project MAC—M.I.T., Cambridge, Massachusetts (April 1974).Google Scholar
  23. 23.
    Morris, F. Lockwood. The next 700 programming language descriptions.LISP and Symbolic Computation, 6, 3/4 (1993) 249–256. Original manuscript dated November 1970.Google Scholar
  24. 24.
    Morris, Jr., James H. A bonus from van Wijngaarden's device.Communications of the ACM, 15, 8 (August 1972) page 773.Google Scholar
  25. 25.
    Moses, Joel. The function of FUNCTION in LISP (or, why the FUNARG problem should be called the environment problem).SIGSAM Bulletin, 15 (July 1970).Google Scholar
  26. 26.
    Paterson, Michael S.Equivalence Problems in a Model of Computation. PhD thesis, Cambridge University (August 1967). Also appears as Artificial intelligence Technical Memo No. 1, M.I.T. A.I. Lab, Cambridge, Massachusetts, issued November 1970.Google Scholar
  27. 27.
    Paterson, Michael S. Program schemata. In Michie, D., editor,Machine Intelligence 3, chapter 2, Edinburgh University Press (1968) 18–31.Google Scholar
  28. 28.
    Paterson, Michael S. and Hewitt, Carl E. Comparative schematology. InRecord of Project MAC Conference on Concurrent Systems and Parallel Computation, ACM (December 1970) 119–127.Google Scholar
  29. 29.
    Randell, B. and Russell, L. J.Algol 60 Implementation. Academic Press, New York (1964).Google Scholar
  30. 30.
    Reynolds, John C. Definitional interpreters for higher order programming languages. InProceedings of the ACM Annual Conference, Boston (August 1972) 717–740.Google Scholar
  31. 31.
    Reynolds, John C. The discoveries of continuations.LISP and Symbolic Computation (1993). Appears in this issue.Google Scholar
  32. 32.
    Rutledge, J. On Ianov's program schemata.Journal of the ACM, 11, 1 (January 1964) 1–9.Google Scholar
  33. 33.
    Sabry, Amr and Felleisen, Matthias. Reasoning about programs in continuation-passing style. InProceedings of the 1992 ACM Conference on Lisp and Functional Programming (June 1992) 288–298. Revised and extended version inLISP and Symbolic Computation, 6, 3/4 (1993) 287–358.Google Scholar
  34. 34.
    Steele Jr., Guy L.Common LISP. Digital Press, second edition (1990).Google Scholar
  35. 35.
    Strachey, Christopher and Wadsworth, Christopher P.Continuations, a Mathematical Semantics for Handling Full Jumps. Technical Monograph PRG-11, Oxford University Computing Laboratory (January 1974).Google Scholar
  36. 36.
    Strong, H. Raymond. Translating recursion equations into flow charts.Journal of Computer and System Sciences, 5 3 (1971) 254–285.Google Scholar
  37. 37.
    van Wijngaarden, Adriaan. Recursive definition of syntax and semantics. In T. B. Steel, Jr., editor,Formal Language Description Languages for Computer Programming, North-Holland, Amsterdam (1966) 13–24.Google Scholar

Copyright information

© Kluwer Academic Publishers 1993

Authors and Affiliations

  • Michael J. Fischer
    • 1
  1. 1.Department of Computer ScienceYale UniversityNew HavenUSA

Personalised recommendations