Dear Lispers,
I want to have an alist to keep track of occurances of items in a buffer I am searching. So I define a function to do that, and start off with a "let" to set an alist with the strings I am searching for, setting the crd to zero for each. But each time I invoke the function, the old values of the cdr are remembered.
For example
(defun mytest () (interactive) (let ((dot '("a" . 0)) (n 0)) (setcdr dot (1+ (cdr dot))) (setq n (1+ n)) (print dot)(print n) ))
Will increase output ("a" . 1) 1, then ("a" . 2) 1 etc, increasing by one each call (though the "n" value is always reset to 0).
If I change the let to be
(let ((dot (cons "a" 0)) (n 0))
Then it works as expected, resetting to zero each time.
Why does a function which sets a let declaired variable to a quoted alist not reset to inittial value each time it is called?
Clearly I am quite unclear about something very fundamental. Would anyone like to straighten me out?
Thanks,
David Riggs, Oberlin Ohio