Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!linus!decvax!duke!mcnc!ncsu!uvacs!mac From: mac@uvacs.UUCP Newsgroups: net.lang Subject: {deep|shallow}{early|late} Message-ID: <1086@uvacs.UUCP> Date: Thu, 1-Dec-83 15:53:14 EST Article-I.D.: uvacs.1086 Posted: Thu Dec 1 15:53:14 1983 Date-Received: Sun, 4-Dec-83 04:25:20 EST Lines: 27 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