Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.1 6/24/83; site hcrvax.UUCP
Path: utzoo!hcrvax!petera
From: petera@hcrvax.UUCP (Smith)
Newsgroups: net.lang
Subject: Lisp numeric programs and garbage creation (reply)
Message-ID: <2049@hcrvax.UUCP>
Date: Thu, 31-Oct-85 12:26:48 EST
Article-I.D.: hcrvax.2049
Posted: Thu Oct 31 12:26:48 1985
Date-Received: Fri, 1-Nov-85 05:24:21 EST
Organization: Human Computing Resources, Toronto
Lines: 23

 You guys seem to be forgetting that there is a whole lot more to adding
two numbers in a lisp interpreter than incrementing a location somewhere.

Look:

   Suppose A is bound to (4 5 6)

   And somewhere I pass A to a procedure that adds 1 to each element and
returns the list. The result is (5 6 7) but that is a completely different
list. It has to be otherwise if A is used again at the upper scope level
it is wrong. Hence when all is said and done we have COPIED A. There just
is no other way in a lisp interpreter. There is then garbage. The point
I was trying to make is that it does not matter that you cram 5 6 and 7
into the car fields of the cons cells that make up the list (4 5 6) you
still cannot operate on those numbers directly. The effect of cramming
4 5 and 6 into car pointer fields mearly reduces the garbage produced
by having to create new numeric atoms as well. We still create new cons
cells.

	Peter Ashwood-Smith
	Human Computing Resources
	Tononto Ontario.