Subject: Re: quest for pass-by-reference semantics in CL
From: Erik Naggum <>
Date: Fri, 03 May 2002 01:55:11 GMT
Newsgroups: comp.lang.lisp
Message-ID: <>

* 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.