Я делаю домашнюю работу на Лиспе, используя clisp для тестирования, и я загружаю этот код и запускаю его в clisp.
(defun myreverse (thelist)
(reverse thelist)
(print thelist)
(if (equal thelist nil)
nil
(if (consp (first thelist))
(cons (myreverse (reverse (first thelist)))
(myreverse (reverse (rest thelist))))
(cons (first thelist) (myreverse (rest thelist))))))
Я новичок в Lisp, но этот код вообще не переворачивает thelist
, мой вывод:
[18]> (myreverse '(a (b c) d))
(A (B C) D)
((B C) D)
(C B)
(B)
NIL
(D)
NIL
(A (C B) D)
Первая строка моего кода говорит (reverse thelist)
, почему она не реверсирует для первого оператора печати? Я что-то упускаю?
(null thelist)
более идиоматичен, чем(equal thelist nil)
в Common Lisp. - person Iceland_jack   schedule 18.01.2012