Почему эта функция каждый раз возвращает другое значение?

Может кто-нибудь объяснить следующее поведение? В частности, почему функция каждый раз возвращает новый список? Почему нетsome-list инициализирован в'(0 0 0) каждый раз, когда функция вызывается?

(defun foo ()
  (let ((some-list '(0 0 0)))
    (incf (car some-list))
    some-list))

Выход:

> (foo)
(1 0 0)
> (foo)
(2 0 0)
> (foo)
(3 0 0)
> (foo)
(4 0 0)

Спасибо!

РЕДАКТИРОВАТЬ:

Кроме того, каков рекомендуемый способ реализации этой функции, если я хочу, чтобы функция выводила'(1 0 0) каждый раз?

Ответы на вопрос(4)

Ваш ответ на вопрос