¿Qué está pasando con este código Common Lisp?

He escrito el siguiente bit de código para simular lanzar un dado de seis lados varias veces y contar cuántas veces aterrizó cada lado:

(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))))

La función funciona muy bien la primera vez que la llamo, pero en llamadas posteriores la variable myList comienza en el valor que tenía al final de la última llamada, en lugar de inicializarse de nuevo a todos los ceros como pensé que debería suceder con ladeja declaración. ¿Por qué pasó esto

Respuestas a la pregunta(3)

Su respuesta a la pregunta