From ... Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news.tele.dk!news.tele.dk!small.news.tele.dk!newsfeed1.bredband.com!bredband!uio.no!nntp.uio.no!ifi.uio.no!not-for-mail From: Erik Naggum Newsgroups: comp.lang.lisp Subject: Re: Idiot's guide to special variables take 2 Date: 19 Nov 2002 08:34:10 +0000 Organization: Naggum Software, Oslo, Norway Lines: 66 Message-ID: <3246683650270899@naggum.no> References: <3246463395155052@naggum.no> <87k7jcautp.fsf@darkstar.cartan> <3246632354249421@naggum.no> <3246668724440113@naggum.no> <3246674834366592@naggum.no> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: maud.ifi.uio.no 1037694851 21193 129.240.65.5 (19 Nov 2002 08:34:11 GMT) X-Complaints-To: abuse@ifi.uio.no NNTP-Posting-Date: 19 Nov 2002 08:34:11 GMT Mail-Copies-To: never User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 Xref: archiver1.google.com comp.lang.lisp:47151 * Kurt B. Kaiser | The task of evaluating the arguments is passed to `eval´, and it proceeds | to produce a different result than the "normal" evaluation referred to in | the HyperSpec. But it does not. That is the whole essence of this thing. | That's the view from someone of limited CL experience. However, I think | I'm getting it now. I think what some people here fail to grasp is that `eval´ is the most ordinary function you can think of. Suppose you replace `eval´ with `identity´, which returns the argument. (let ((x 42)) (identity x)) => 42 (let ((x 42)) (identity 'x)) => x Now we know what `eval´ /receives/. The question is, what should it do with it? By the very nature of lexical bindings, they are only visible in their /lexical/ scope, hence their name. This means that when the function, `identity´ /or/ `eval´, receives the argument, `x´, we are no longer in the /lexical/ scope of the binding for `x´, hence we cannot refer to this binding at all. | > | 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. | | The terminology "punches holes" is from your intuitive example. It is precisely /because/ of that that it makes no sense. I know what I meant with the analogy. What I am left with now is that it was not fully understood or was interpreted beyond the intended effect. | I should say, "...including those marks on the lexical overlay which were | created after the last dynamic binding..." A `special´ declaration with lexical scope is different from a `special´ proclamation, which is a declaration with global scope. | I think my biggest problem is getting away from concepts picked up from | the old dynamic Lisps. If Emacs Lisp was your first encounter with `eval´, as another poster suggested, realizing the effect of lexical binding could take time. | I don't think I'm having too much trouble letting go. CL is CL. I only | explained in detail how I was stuck because you asked. Hm. I try to keep in mind some form of predictive intuition about what people I try to explain something to must have understood and where their points if confusion remains, but I must admit to have lost track of you. -- 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.