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)されます。がfalseの(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

else ケースのリストがない場合 、 condorは本当に必要ありません。あなたが探しているものかもしれません。それは基本的に.ifwhenif

(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 に答える