5

我想在计划中这样做:

if ((car l) != (car (cdr (order l))) do something

特别是我写了这个:

((eq? (car l) (car (cdr (order l))) ) 
 (cons (count (car (order l)) (order l)) 
       (count_inorder_occurrences (cdr (order l))))) 

但它(car l)(car (cdr (order l))平等相比。我只想在错误的情况下做某事eq?。在我的示例中如何做到这一点?

谢谢

4

3 回答 3

11

你可以使用not它。

(cond
 ((not (eq? (car l) (cadr (order l))))
  (cons (count (car (order l)) (order l))
        (count-inorder-occurrences (cdr (order l))))
 ...)
于 2013-03-28T15:58:17.590 回答
1

您可以使用not否定谓词的值。

例如在if声明中:(if (not (eq? A B)) <EVAL-IF-NOT-EQ> <EVAL-IF-EQ>)

或者cond你可以这样做:

(cond ((not (eq? A B))
       <EVAL-IF-NOT-EQ>)
      .
      .
      .
      (else <DEFAULT-VALUE>))
于 2013-03-28T15:58:29.113 回答
1

cond如果if您没有 else 案例列表,您 实际上并不需要。when可能是您正在寻找的。这基本上只是一个真实的情况if

(when (not (eq? (car l) (cadr (order l))))
   (cons 
      (count (car (order l)) (order l)) 
      (count-inorder-occurrences (cdr (order l)))
   )
)
于 2015-05-25T17:46:48.320 回答