I use the following statement
(push (list list1 list2 list3) biglist)
Everytime after updating list1,2,3 I also update biglist to have a history
of changes.
my problem is biglist also updates itself, in other words in contains the
last
values of list1,2,3 repeated many times instead of having the history of
values.
How can I prevent biglist from changing itself?
thanks
* "Jeremy Rowlings" <······@hotmail.com>
| Everytime after updating list1,2,3 I also update biglist to have a
| history of changes. my problem is biglist also updates itself, in
| other words in contains the last values of list1,2,3 repeated many
| times instead of having the history of values. How can I prevent
| biglist from changing itself?
How do you "update" list1..3? This kind of thing would happen if you
retain the first cons of each of those lists and destructively modify
its car or cdr. It is not biglist which modifies itself, but the
_identity_ of the list elements that reflects the current value, since
you have not copied the list structure or contents, only the list
identity, which is the first cons. If you really want to keep a
history of changes when you make destructive modifications to the
list, use copy-list or copy-tree, but then that probably means you
will waste all the effort that went into prematurely optimizing your
code with destructive list operations.
#: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.