我的代码只有一个功能:
(defun equalprev (x y)
(cond ((or (atom x) (atom y))
(if (not (null isLoop))
t
((setq list1 (append list1 (list x)))
(setq list2 (append list2 (list y)))
(eql x y))))
((equalprev (car x) (car y))
(equalprev (cdr x) (cdr y)))))
*** - SYSTEM::%EXPAND-FORM: (SETQ LIST1 (APPEND LIST1 (LIST X))) should be a lambda
expression
The following restarts are available:
ABORT :R1 Abort main loop
感谢任何帮助
答案 0 :(得分:1)
'if'表达式的替代表达式是((set!...)...)。第一个位置需要是函数或句法形式。在这种情况下,您需要预测:
(progn
(setq list1 ...)
(setq list2 ...)
(eql x y))
答案 1 :(得分:0)
使用de Morgan定律,您可以用不同的方式构建您的条件:
(not
(when (null isLoop)
(setq list1 (append list1 (list x)))
(setq list2 (append list2 (list y)))
(not (eql x y))))
完全避免使用预测(不是说这是一件坏事,但往往不赞成)。