我想在计划中这样做:
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?
为假时做某事。我怎么能在我的例子中这样做?
由于
答案 0 :(得分:8)
您可以使用not
。
(cond
((not (eq? (car l) (cadr (order l))))
(cons (count (car (order l)) (order l))
(count-inorder-occurrences (cdr (order l))))
...)
答案 1 :(得分:1)
您可以使用not
来否定谓词的值。
e.g。在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>))
答案 2 :(得分:1)
如果您没有其他案例列表,那么您真的不需要cond
或if
。 when
可能就是你要找的东西。它基本上只是if
的真实情况。
(when (not (eq? (car l) (cadr (order l))))
(cons
(count (car (order l)) (order l))
(count-inorder-occurrences (cdr (order l)))
)
)