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