Subject: Re: quest for pass-by-reference semantics in CL From: Erik Naggum <erik@naggum.net> Date: Fri, 03 May 2002 01:55:11 GMT Newsgroups: comp.lang.lisp Message-ID: <3229379710940143@naggum.net> * Frode Vatvedt Fjeld <frodef@acm.org> | 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.