Что происходит с этим общим кодом LISP?

Я написал следующий бит кода для моделирования прокатки Сертируют несколько раз и считая, сколько раз приземлилось какая-то сторона:

(defun dice (num)
  (let ((myList '(0 0 0 0 0 0)))
    (progn (format t "~a" myList)
           (loop for i from 1 to num do
                 (let ((myRand (random 6)))
                   (setf (nth myRand myList) (+ 1 (nth myRand myList)))))
           (format t "~a" myList))))

Функция отлично работает в первый раз, когда я называю это, но на последующих вызовах перемезу MyList запускается по значению, которое он имел в конце последнего Позвоните, вместо того, чтобы быть инициализированным назад ко всем нулям, как я думал, должно произойти с оператором , пусть . Почему это происходит?

10
задан Dustin 1 September 2011 в 20:39
поделиться