У меня есть немного кода:
(defun divisor (x)
(loop for i from 2 to x do
(if (= x i) (return x)
(if (not (mod x i))
(return (append i (divisor (/ x i))))))))
, который должен вернуть список простых факторов x.Тем не менее, код просто возвращает х.
Функция defun оценивается без ошибок.Я пытался отследить каждую функцию в defun, и ни одна из них никогда не оценивалась.Цикл - это макрос, поэтому я не могу отследить его, но если я очищу внутреннюю часть цикла и заменим на
(format t "~d " i)
, он будет считать от 2 до x, как я и ожидал.
Я предполагаю, что сделал что-то не так, но не могу понять.