0

私のコードのたった1つの関数:

(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

どんな助けでも大歓迎です

4

2 に答える 2

1

'if'式の代替式は((set!...)...)です。最初の位置は、関数または構文形式のいずれかである必要があります。この場合、次のように予測する必要があります。

(progn
  (setq list1 ...)
  (setq list2 ...)
  (eql x y))
于 2012-05-26T22:38:07.400 に答える
0

ド・モルガンの法則を使用すると、条件を別の方法で構築できます。

(not
 (when (null isLoop)
   (setq list1 (append list1 (list x)))
   (setq list2 (append list2 (list y)))
   (not (eql x y))))

prognの使用を完全に回避します(それが悪いことではありませんが、しばしば眉をひそめます)。

于 2012-05-27T12:39:15.733 に答える