Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!caip!lll-crg!seismo!nbires!hao!hplabs!pyramid!decwrl!glacier!Shasta!andy From: andy@Shasta.STANFORD.EDU (Andy Freeman) Newsgroups: net.lang.lisp Subject: Re: Against the Tide of Common LISP Message-ID: <654@Shasta.STANFORD.EDU> Date: Wed, 2-Jul-86 22:40:51 EDT Article-I.D.: Shasta.654 Posted: Wed Jul 2 22:40:51 1986 Date-Received: Fri, 4-Jul-86 08:38:02 EDT References: <1311@well.UUCP> <3827@utah-cs.UUCP> <1316@well.UUCP> <3837@utah-c <1372@well.UUCP> Reply-To: andy@Shasta.UUCP (Andy Freeman) Organization: Stanford University Lines: 22 (apply foo ) should be interpreted iff the function it is in is interpreted or it is typed at top level (or appears at top level in a file that is loaded). The function being called will be interpreted if it hasn't been compiled but what's strange about that? If the function was compiled, then compiled code will be run. Any implementation that can't handle this is wrong. It is possible to do lexical variable reference in interpreted code as fast as deep-binding lookup of dynamic variables. Deep-binding lookup in compiled code isn't much faster than it is in interpreted code. (The exception to this is when it can be shown equivalent to lexical scope. Unfortunately, broken compilers don't bother to prove equivalence, they just change the semantics.) Lexical variable reference is much faster in compiled code than in interpreted code. For those of you who are saying "but shallow-binding is much faster, why would anyone use deep-binding", think about multi-processors, or even multi-tasking. Now name a lisp machine that uses shallow-binding. Shallow-binding only works in a very restricted environment. No one wants to work in that kind of environment anymore. -andy