Fast algorithms for finding nearest common ancestors
SIAM Journal on Computing
A data structure for dynamic trees
Journal of Computer and System Sciences
Communications of the ACM
A model and stack implementation of multiple environments
Communications of the ACM
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
Macaroni is better than spaghetti
Proceedings of the 1977 symposium on Artificial intelligence and programming languages
Can REDUCE be run in parallel?
ISSAC '89 Proceedings of the ACM-SIGSAM 1989 international symposium on Symbolic and algebraic computation
ISSAC '90 Proceedings of the international symposium on Symbolic and algebraic computation
Desiderata for the standardization of LISP
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
An alternative dynamic binding model: deep binding with cacheing
ACM SIGPLAN Lisp Pointers
Hi-index | 0.00 |
This paper considers current solutions to the problem of representing multiple environments, and uses the results to develop a new model. The motivation is partly a consequence of the renewed interest in the more sophisticated forms of access and control [Sussman & Steele 1978], [Smith 1983]. [Friedman et al. 1984], and partly because the problem identified by Moses [1970] has not, as yet, been satisfactorily resolved. The new model is derived from a consideration of the semantics of identifier binding interrogation. The implementation itself rests on the existence of an environment labeling function which solves a variant of a well known graph theory problem called nearest common ancestor. We describe a suitable implementation of such a function. The new scheme has been implemented in two different LISP systems (Cambridge LISP and Portable Standard LISP), and a third (LISP/VM) is under consideration. In addition, pure deep binding and full shallow binding have both been implemented on top the same base system (Cambridge LISP). Thus it is possible to collect comparisons of the relative efficiencies running simple (stack behavior) programs and complex (multiple context) programs. Some timing results for various tests are given in the final section.