Subject: Re: Idiot's guide to special variables take 2 From: Erik Naggum <erik@naggum.no> Date: 19 Nov 2002 06:07:14 +0000 Newsgroups: comp.lang.lisp Message-ID: <3246674834366592@naggum.no> * Kurt B. Kaiser | I would have expected eval to evaluate its argument in the lexical | environment of the let block. But /why/? When you quote x, you explicitly request that it /not/ be evaluated. You pass `eval´ a symbol, not a value from the lexical environment. If you want the latter effect, do not quote x. | Other functions, like print, have their arguments evaluated in that | lexical environment before being passed. If you try `(print 'x)´, it will print `x´, not the value thereof. | However, the _effect_ of eval seems to be not quite like other functions | because when it evaluates its argument it does so in the current dynamic | environment, and that is definitely not what I was expecting. All other functions do the same. This is how function evaluation works. This is how the dynamic environment works. | On a slightly different, but closely related, subject, I find it | confusing that the `special declaration also "punches holes" in those | parts of the lexical overlay which were created after the last dynamic | binding, as in the example. I have no idea what this means. I believe you still think in a different language and are unwilling to let go of what you believe you understand. Like perhaps `eval´ in Perl. -- Erik Naggum, Oslo, Norway Act from reason, and failure makes you rethink and study harder. Act from faith, and failure makes you blame someone and push harder.