The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
A model and stack implementation of multiple environments
Communications of the ACM
Algol-60 Implementation
LISP 1.5 Programmer's Manual
Transformations and reduction strategies for typed lambda expressions
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
EPIC - a retargetable, highly optimizing Lisp compiler
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Survey on special purpose computer architectures for AI
ACM SIGART Bulletin
Embedding continuations in procedural objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
The impact of the LCC-optimization on the performance of a static scope LISP interpreter
SIGSMALL '88 Proceedings of the 1988 ACM SIGSMALL/PC symposium on ACTES
Shallow binding makes functional arrays fast
ACM SIGPLAN Notices
CONS should not CONS its arguments, or, a lazy alloc is a smart alloc
ACM SIGPLAN Notices
Lively linear Lisp: “look ma, no garbage!”
ACM SIGPLAN Notices
Communications of the ACM
A randomized implementation of multiple functional arrays
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Real-time deques, multihead Turing machines, and purely functional programming
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Purely functional random-access lists
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
A probabilistic approach to the problem of automatic selection of data representations
Proceedings of the first ACM SIGPLAN international conference on Functional programming
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Desiderata for the standardization of LISP
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Dynamic optimization of covered tail recursive functions in applicative languages
CSC '86 Proceedings of the 1986 ACM fourteenth annual conference on Computer science
A Syntactic Theory of Dynamic Binding
Higher-Order and Symbolic Computation
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
A scheme for implementing functional values on a stack machine
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
ByteLisp and its Alto implementation
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
Experience with a microprogrammed Interlisp system
MICRO 11 Proceedings of the 11th annual workshop on Microprogramming
An optimizing compiler for lexically scoped LISP
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
A new method for functional arrays
Journal of Functional Programming
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
A persistent union-find data structure
ML '07 Proceedings of the 2007 workshop on Workshop on ML
Copy-on-write in the PHP language
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Binding strategies and scope rules are independent
Computer Languages
Deep and shallow binding: The assignment operation
Computer Languages
A Compiler Correctness Proof For The Static Link Technique By Means Of Evolving Algebras
Fundamenta Informaticae
Hi-index | 48.23 |
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.