mac@uvacs.UUCP (12/01/83)
It's my impression that in the context of LISP there are two aspects to binding: time and place. Early and late binding are also called static and dynamic (or lexical and ?). Lisp is traditionally late bound. Scheme & related dialects are early bound. Deep and shallow binding are independent of binding times. Deep bound systems search a single binding stack for any variable (the search may go deep). Shallow binding systems have a separate stack for each variable and need only look at the top (shallow). According to this interpretation, deep/shallow binding is not visible in the absence of concurrency. Early/late binding makes a noticeable difference. Funargs want early binding. It's true that there's confusion on this point. The dragon book ("Principles of Compiler Design", Aho & Ullman), for one. I was about to complain about their incorrect use of the term deep to mean static binding, when I discovered that the 1979 edition corrects this. "The Anatomy of Lisp" is probably the final word. Alex Colvin ARPA: mac.uvacs@csnet-relay CS: mac@virginia USE: ...uvacs!mac