Я написал следующий бит кода для моделирования прокатки Сертируют несколько раз и считая, сколько раз приземлилось какая-то сторона:
(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 запускается по значению, которое он имел в конце последнего Позвоните, вместо того, чтобы быть инициализированным назад ко всем нулям, как я думал, должно произойти с оператором , пусть . Почему это происходит?