From ... Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!newsfeeds.belnet.be!news.belnet.be!ossa.telenet-ops.be!nmaster.kpnqwest.net!nreader2.kpnqwest.net.POSTED!not-for-mail Newsgroups: comp.lang.lisp Subject: Re: quest for pass-by-reference semantics in CL References: <2h6627rlr0.fsf@vserver.cs.uit.no> <3229346381256292@naggum.net> <2hd6weqvs8.fsf@vserver.cs.uit.no> Mail-Copies-To: never From: Erik Naggum Message-ID: <3229379710940143@naggum.net> Organization: Naggum Software, Oslo, Norway Lines: 24 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Fri, 03 May 2002 01:55:11 GMT X-Complaints-To: newsmaster@KPNQwest.no X-Trace: nreader2.kpnqwest.net 1020390911 193.71.199.50 (Fri, 03 May 2002 03:55:11 MET DST) NNTP-Posting-Date: Fri, 03 May 2002 03:55:11 MET DST Xref: archiver1.google.com comp.lang.lisp:32676 * Frode Vatvedt Fjeld | So maybe this description could be correct, and informative for | outsiders: | | Common Lisp is call-by-value. Every value is (or can be considered to | be) a pointer, however some values (like numbers, characters, and nil) | are immutable. I think we need a fresh start. Argument passing in Common Lisp is conceptually equivalent to building a list of the result of evaluating each of the argument forms to the function and passing that list to the function, which conceptually unpacks it into the formal parameters. All knowledge of the source of the values is lost by that time. The conceptual equivalence to a list is used to lay the ground for apply, &rest, &key, etc, and also neatly captures the order of evaluation so an explanation of this rule will fall out naturally from the description. -- In a fight against something, the fight has value, victory has none. In a fight for something, the fight is a loss, victory merely relief. 70 percent of American adults do not understand the scientific process.