Я работал над учебником по общему lisp, и я только что познакомился с incf
и dolist
, я хотел посмотреть, правильно ли я понял, как работает dolist, сделав функцию inc-list
, котораяувеличил бы каждый элемент списка на единицу:
(defvar a-list (list 1 2 3))
(inc-list a-list) => (2 3 4)
Вот как я определил inc-list
(defun inc-list (list)
(progn
(dolist (element list)
(incf element))
list))
Это не похоже на работу.когда я пытаюсь (inc-list a-list)
, я возвращаюсь (1 2 3)
и a-list => (1 2 3)
.Это не беспокоило бы меня так сильно, если бы не факт:
(incf (car a-list))
(incf (cadr a-list))
(incf (caddr a-list))
дает мне a-list => (2 3 4)
.Есть ли секрет, что означает element
?