Ваш вызов aref
получает указанный элемент, но вы ничего не делаете с ним.Вы можете прикрепить его к списку, который затем возвращается:
(defun loopfn (state)
(let ((result '()))
(loop for x from 0 to 2 do
(loop for y from 0 to 2 do
(setf result (cons (aref state x y) result))))
result))
или вы можете просто распечатать его:
(defun loopfn (state)
(loop for x from 0 to 2 do
(loop for y from 0 to 2 do
(format t "~a~%" (aref state x y)))))
Первый вариант гораздо полезнее;Вы хотите вернуть вещи, которые затем могут быть обработаны, и все, что будет передано на верхний уровень, будет распечатано для вас.
Пока вы используете LOOP
, вы можете легко собрать свои значенияс COLLECT
, APPEND
и т. д., что является идиоматическим способом сделать это.