Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article
Free access

Shallow binding in Lisp 1.5

Published: 01 July 1978 Publication History

Abstract

Shallow binding is a scheme which allows the value of a variable to be accessed in a bounded amount of computation. An elegant model for shallow binding in Lisp 1.5 is presented in which context-switching is an environment tree transformation called rerooting. Rerooting is completely general and reversible, and is optional in the sense that a Lisp 1.5 interpreter will operate correctly whether or not rerooting is invoked on every context change. Since rerooting leaves assoc [v, a] invariant, for all variables v and all environments a, the programmer can have access to a rerooting primitive, shallow[], which gives him dynamic control over whether accesses are shallow or deep, and which affects only the speed of execution of a program, not its semantics. In addition, multiple processes can be active in the same environment structure, so long as rerooting is an indivisible operation. Finally, the concept of rerooting is shown to combine the concept of shallow binding in Lisp with Dijkstra's display for Algol and hence is a general model for shallow binding.

References

[1]
Bobrow, D.G., and Wegbreit, B. A model and stack implementation of multiple environments. Comm. A CM 16, 10(Oct. 1973), 591-603.
[2]
Galley, S., and Pfister, G. The MDL Language. Programming Technology Division SYS. 11.01. Proj. MAC, M.I.T., Cambridge, Mass., Sept. 1975.
[3]
Greenblatt, R. The Lisp Machine. A.I. Working Paper 79, M.I.T. A.I. Lab., Cambridge, Mass., Nov. 1974.
[4]
Henhapl, W., and Jones, C.B. A run-time mechanism for referencing variables. Inform. Processing Letters 1 (1971), 14-16.
[5]
Knuth, D. The Art of Computer Programming, Vol. 1: Fundamental Algorithms. Addison-Wesley, Reading, Mass., 1968, p. 417.
[6]
McCarthy, J., Abrahams, P., Edwards, D., Hart, T., and Levin, M. LISP 1.5 Programmer's Manual. M.I.T. Press, Cambridge, Mass., 1965, especially pp. 12-13, 70-71.
[7]
Moon, D. MACLISP Reference Manual, Revision 0. Proj. MAC, M.I.T., Cambridge, Mass., 1974.
[8]
Moses, J. The function of FUNCTION in LISP. Memo 199, M.I.T.A.I. Lab., Cambridge, Mass., June 1970.
[9]
Randell, B., and Russell, LJ. ALGOL 60 Implementation. Academic Press, London and New York, 1964, pp. 65-68, 75.
[10]
Teitelman, W. InterLISP Reference Manual. Xerox Palo Alto Res. Ctr., Palo Alto, Calif., 1974.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Communications of the ACM
Communications of the ACM  Volume 21, Issue 7
July 1978
86 pages
ISSN:0001-0782
EISSN:1557-7317
DOI:10.1145/359545
Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 July 1978
Published in CACM Volume 21, Issue 7

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Algol display
  2. FUNARG's
  3. Lisp 1.5
  4. deep binding
  5. environment trees
  6. multiprogramming
  7. shallow binding

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)136
  • Downloads (Last 6 weeks)16
Reflects downloads up to 09 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Snapshottable StoresProceedings of the ACM on Programming Languages10.1145/36746378:ICFP(338-369)Online publication date: 15-Aug-2024
  • (2024)Gale-Shapley VerifiedJournal of Automated Reasoning10.1007/s10817-024-09700-x68:2Online publication date: 14-Jun-2024
  • (2020)Compiler and runtime support for continuation marksProceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3385412.3385981(45-58)Online publication date: 11-Jun-2020
  • (2009)Copy-on-write in the PHP languageACM SIGPLAN Notices10.1145/1594834.148090844:1(200-212)Online publication date: 21-Jan-2009
  • (2009)Copy-on-write in the PHP languageProceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages10.1145/1480881.1480908(200-212)Online publication date: 21-Jan-2009
  • (2007)A persistent union-find data structureProceedings of the 2007 workshop on Workshop on ML10.1145/1292535.1292541(37-46)Online publication date: 2-Oct-2007
  • (2006)Delimited dynamic bindingACM SIGPLAN Notices10.1145/1160074.115980841:9(26-37)Online publication date: 16-Sep-2006
  • (2006)Delimited dynamic bindingProceedings of the eleventh ACM SIGPLAN international conference on Functional programming10.1145/1159803.1159808(26-37)Online publication date: 17-Sep-2006
  • (2006)A portable lisp compilerSoftware: Practice and Experience10.1002/spe.438011060311:6(541-605)Online publication date: 27-Oct-2006
  • (2005)A syntactic theory of dynamic bindingTAPSOFT '97: Theory and Practice of Software Development10.1007/BFb0030637(727-741)Online publication date: 20-Jun-2005
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Full Access

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media