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