Я написал код, чтобы отменить список и все его подсписки рекурсивно:странных результаты, используя цитаты, реверсивный список со всеми подсписками рекурсивны
(defun rev1(list final)
(if (eq list())
final
(if (atom (car list))
(rev1(cdr list) (cons (car list) final))
(rev1(cdr list) (cons (rev1(car list)()) final)))))
(defun rev(list)
(rev1 list()))
Проблема заключается в том, что если я вызываю функцию с: (rev '(1 2 '(3 2 1) 3))
ожидаемыми вывод должен быть (3 (1 2 3) 2 1)
, но вместо этого я получаю: (3 ((1 2 3) QUOTE) 2 1)
, и я не понимаю, почему. Может ли кто-нибудь объяснить мне, где проблема?
http://dept-info.labri.u-bordeaux.fr/~idurand/enseignement/PFS/Common/Strandh- Tutorial/indentation.html – coredump
Возможный дубликат [Когда использовать цитату в Lisp] (http://stackoverflow.com/questions/134887/when-to-use-quote-in-lisp) – sds