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

Кто-нибудь может объяснить следующее поведение? В частности, почему функция каждый раз возвращает разный список? Почему 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)

Спасибо!

EDIT:

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

19
задан Rainer Joswig 27 April 2015 в 03:56
поделиться