From ... From: Erik Naggum Subject: Re: Pass by reference Date: 2000/11/16 Message-ID: <3183389778776917@naggum.net>#1/1 X-Deja-AN: 694435985 References: <3A115DFA.E73FCC70@nyc.rr.com> <8uub0q$9t5$1@nnrp1.deja.com> <3A12D88D.5114@my-deja.com> <3183311478192040@naggum.net> mail-copies-to: never Content-Type: text/plain; charset=us-ascii X-Complaints-To: newsmaster@eunet.no X-Trace: oslo-nntp.eunet.no 974402222 19964 195.0.192.66 (16 Nov 2000 19:17:02 GMT) Organization: Naggum Software; vox: +47 800 35477; gsm: +47 93 256 360; fax: +47 93 270 868; http://naggum.no; http://naggum.net User-Agent: Gnus/5.0803 (Gnus v5.8.3) Emacs/20.7 Mime-Version: 1.0 NNTP-Posting-Date: 16 Nov 2000 19:17:02 GMT Newsgroups: comp.lang.lisp * Nils Goesche | I never understood what `call by name' means. It means that the full expression in the caller is evaluated in the callee, instead of actually passing in the object so evaluated. For instance, if you pass in foo.bar[i], meaning the i'th slot in the bar vector of the foo object, the evaluation that leads to this object is performed in the callee with the prevailing values. That is, if you also get passed in i by some means, you reference some other slot if you change the value of i, even though none of this is visible in the argument you actually reference. The idea is that you should be able to modify the lexically named place in the caller from the callee as if you _were_ the caller. Very clever implementation techniques are required to implement this insanity correctly and usefully, not to mention that code written with this feature used and abused east and west is exceptionally exciting to debug. | Has it to do with Lisp's special variables? No relation at all. (Various deities be thanked, etc.) #:Erik -- ALGORITHM: a procedure for solving a mathematical problem in a finite number of steps that frequently involves repetition of an operation. ALGOREISM: a procedure for solving an electoral problem in a finite number of steps that frequently involves repetition of an operation.