| Henry G. Baker, Jr. Shallow binding in Lisp 1.5. Communications of the ACM, 21(7):565-- 569, July 1978. |
....and a list of numbers that select those variables that are passed on to the body ( names index (append fv (list x) fv e) For applications, there is similar cached function get application that selects and distributes the values of the free variables. 3. 7 Shallow binding Shallow binding [4] inspires an approach which represents variables by reference cells. It is safe to bind variables to fixed mutable cells at compile time, provided that each cell contains a stack of values with the current value on top. The type of the active syntax is CEnv Unit Val. There is no explicit ....
Henry G. Baker, Jr. Shallow binding in Lisp 1.5. Communications of the ACM, 21(7):565--569, July 1978.
....difference list or trailer, have been used to implement fully persistent arrays. They can be found, for examples, in the works of Holmstrom [15] Hughes [18] Aasa, Holmstrom Nilsson [6] and Bloss [9,10] These techniques seem to be variations of the shallow binding scheme devised by Baker [7,8]. Under these techniques, an access to the newest version will take O(1) time; but an access to an old version will take time linear to the number of differences between the old version and the current version. These techniques are good for single threaded programs because those programs always ....
....E, looking for the most recent value bound to v. Under the deep binding scheme, a context switch between environments costs constant time but a variable lookup in an environment may cost time linear to the length of its binding path. In order to improve the performance of variable lookup, Baker [7] develops the shallow binding scheme where a cache is introduced to record the bindings of variables in the current environment. Variable lookup in the current environment is performed by a constant time reference to the cache. The current environment is also made the root of the context tree. ....
Henry G. Baker, Jr. Shallow binding in Lisp 1.5. Communications of the ACM, 21(7):565-- 569, July 1978.
.... safely overwritten [2, 16, 24, 31, 32] Another general approach is to design efficient algorithms to make aggregate data structures fully persistent (i.e. purely functional) such that after a sequence of updates the newest version and all previous versions of the aggregate are still accessible [1, 4, 5, 10, 11, 17, 21, 22, 26, 27]. General techniques for making aggregate data structures fully persistent are described by Driscoll, Sarnak, Sleator, and Tarjan [11] However, the techniques often rely on side effects to achieve good time and space performance. It is not clear how they can be implemented in a purely ....
Henry G. Baker, Jr. Shallow binding in Lisp 1.5. Communications of the ACM, 21(7):565--569, July 1978.
....yields more efficient lookup, but in the presence of first class continuations, stack based techniques cannot be used. State spaces have traditionally been used to maintain shallow bindings when control is abruptly transferred to prior contexts by the invocation of first class continuations [1, 4]. A statespace algorithm, simpler than those previously reported, is presented and proved correct in our formal context. A generalization of the state space algorithm that implements the dynamic wind operation of Scheme is also provided. Finally, we propose a semi shallow binding technique that ....
H. G. Baker Jr. Shallow binding in Lisp 1.5. Comm. ACM, 21(7):565--569, July 1978.
....original image. The above drawback leads one to another approach, which is to design efficient algorithms to make aggregates fully persistent (i.e. purely functional) such that, after a sequence of updates, the newest version as well as all previous versions of the aggregate are still accessible [1, 5, 6, 8, 9, 10, 11, 15, 19, 22]. The challenge is to reduce as much as possible the associated overhead when maintaining multiple versions of an aggregate. In this paper, we develop a randomization technique for the efficient implementation of multiple functional arrays. The expected performance of the randomized implementation ....
....to an array even if the array is used only in a single threaded matter. We aim to retain the constant time accessibility of an array as often as possible. Baker s shallow binding scheme, which was originally designed to support multiple environments for higher order functional languages [5], can be used to implement functional arrays [6] In this scheme, also known as the reversible differential list method in the folklore, only one version of the arrays keep the physical copy of the cache. This array is the root in the version tree. Each of other versions is represented as a path ....
Henry G. Baker, Jr. Shallow binding in Lisp 1.5. Communications of the ACM, 21(7):565--569, July 1978.
....to implement bag aggregates, and the performance results are compared to those of deterministic selection strategies. 1 Introduction How to design and implement efficient aggregate data structures has been a major concern for both the designers and users of functional programming languages [1] [2] [3] 5] 6] 7] 11] 14] 17] 18] 20] 23] 25] 26] The problem becomes more complicated if access patterns to aggregates are highly variant, or even unpredictable. A common situation is where there are several representations of an aggregate, with one representation more efficient than the ....
....times for aggregate of sizes from 2 m Gamma1 1 to 2 m , if m is small. If m is large, the times in the entry is the average of times for aggregate of sizes from 2 m Gamma c to 2 m for some constant c. From the two tables, we can construct the cost matrices C s. For example, C ff 1;1 [2 5 ] = 3:51 Theta 10 Gamma6 C ff 1;2 [2 5 ] 2:90 Theta 10 Gamma6 1:09 Theta 10 Gamma3 6:47 Theta 10 Gamma5 C ff 2;1 [2 5 ] 1:81 Theta 10 Gamma4 1:46 Theta 10 Gamma5 3:51 Theta 10 Gamma6 C ff 2;2 [2 5 ] 6:47 Theta 10 Gamma5 A SML functor is then ....
[Article contains additional citation context not shown here]
Henry G. Baker, Jr. Shallow binding in Lisp 1.5. Communications of the ACM, 21(7):565--569, July 1978.
....the current value of a variable is found by going back through the A list, locating the first (i.e. latest added) binding. While this is a side effect free implementation, it can end up being quite slow, especially when the variable is bound outside of a deeply nested recursive call. Therefore [Baker 79] introduced the implementation technique known as shallow binding: to every symbol (or every symbol declared a fluid variable) is associated a value cell, which can be accessed in constant time. When a variable is bound to a new value, the old contents of its value cell is saved away on the ....
Henry G. Baker, Jr.: Shallow Binding in LISP 1.5. In Artificial Intelligence: An MIT Perspective, Vol. 2, pp. 375--387, MIT Press (1979).
....are currently accessible and the values which were saved by procedure calls. They are replaced in the shallow machine A SM s by two components CHI (current values) and SS (save stack) Interestingly, on one hand the machine is an implementation of shallow binding introduced in the Seventies in [1] in order to decrease the access time for current values, and on the other hand its is suitable best for a proof of equivalence w.r.t. the denotational semantics. The reason is that both shallow machine and denotational semantics handle variables in the same way. The component VS can be ....
....of the save stack. It may be interesting to investigate whether there is an alternative notion of equivalence of evolving algebras without this flaw. Acknowledgements I would like to thank the unknown referees for pointing out the necessity of an additional refinement step and the reference to [1]. Appendix: Notations ffl N = f1; 2; 3; g denotes the set of natural numbers. ffl N 0 = f0; 1; 2: g denotes the set of natural numbers including 0. ffl f : A ( B denotes a partial function from set A to set B. ffl Dom(f) fa 2 A jj f(a) definedg denotes the domain of the partial ....
H. G. Baker. Shallow Binding in Lisp 1.5. Comm. ACM, 21(7):565---569, 1978.
....as static analysis [7, 26, 30] linear types [36] or monads [29] An array that supports non singled threaded access is called fully persistent [14] A number of data structures have been proposed to represent fully persistent arrays. One technique, known as version arrays [1] or shallow binding [4, 5], maintains a cache of elements along with trees of differential nodes indicating differences from the cache. This technique yields O(1) performance for single threaded accesses, but may degrade to O(#updates) for non single threaded accesses. Chuang [9] uses randomization to improve the expected ....
Henry G. Baker. Shallow binding in Lisp 1.5. Communications of the ACM, 21(7):565--569, July 1978.
....hence, the name of the technique. However, in the absence of such a representation for dynamic variables, one can allocate a unique number to each dynamic variable by pre processing programs, and lookup now becomes an access to a component of a vector [52] Baker s rerooting technique [3] combines the benefits of deep and shallow bindings in a single implementation. 6. Parallel Evaluation In Section 3, we observed that the axiom (dlet propagate 0 ) was particularly suitable for parallel evaluation because it allowed the independent evaluation of the operator and operand by ....
Henry G. Baker. Shallow Binding in LISP 1.5. Communications of the ACM, 21(7):565--569, 1978.
....never gets a longer chain than the previous version. This favors searches in (and updates to) the most recent version and we are convinced that this is optimal in almost any real application. This is similar to the idea of shallow variable binding in functional and logic programming languages [Baker 78; Miyazaki 85] and we have indeed used MVHT to implement interpreters for functional languages very comfortably. The idea of a predicate which makes some version of a hash table the most efficient to use is due to Baker who uses a shallow primitive to give fast access to an old variable binding ....
....85] and we have indeed used MVHT to implement interpreters for functional languages very comfortably. The idea of a predicate which makes some version of a hash table the most efficient to use is due to Baker who uses a shallow primitive to give fast access to an old variable binding environment [Baker 78] Our algorithm for doing this was inspired by his. In general, many of his ideas are similar to ours although he only considers having one physical table and has no direct counterpart to our primitives for updating tables. The physical table is a hash table implemented according to one of the ....
H. G. Baker, Shallow Binding in Lisp 1.5, Communications of the ACM, vol. 21, no. 7, pp. 565--569, July 1978.
No context found.
Henry G. Baker, Jr. Shallow binding in Lisp 1.5. Communications of the ACM, 21(7):565-- 569, July 1978.
No context found.
Henry G. Baker, Jr. Shallow binding in Lisp 1.5. Communications of the ACM, 21(7):565-- 569, July 1978.
No context found.
Henry G. Baker, Jr. Shallow binding in Lisp 1.5. Communications of the ACM, 21(7):565--569, July 1978.
No context found.
Henry Baker. Shallow binding in lisp 1.5. Comm. of the ACM, 21(7):565--569, 1978.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC