Schemeには等号関数はあるが不等号関数は組み込みにはない。ここはcommonlispなどと違うので注意
読みにくくなるので注意
(< a b) より大きい (> a b) より小さい (<= a b) 以上 (>= a b) 以下 (= a b) 等号比較関数も一度に複数の引数を処理できるが
読みにくくなるので注意
(< 1 2 3)
eq?とほぼ同じ挙動だが
リストに対する判定で違いがある
中身のデータ内容が同じでもfalseになるが
equal?は変数が違っても中身のデータ内容が同じならtrueにする
このeq?の挙動の違いは
リストに対してだけであり
通常の変数では同じである
リストに対する判定で違いがある
(define l1 '(1 2 3)) (define l2 '(1 2 3)) (eq? l1 l2) >#f (equal? l1 l2) >#teq?やeqv?はリストの変数が違えば
中身のデータ内容が同じでもfalseになるが
equal?は変数が違っても中身のデータ内容が同じならtrueにする
このeq?の挙動の違いは
リストに対してだけであり
通常の変数では同じである
(define a1 100) (define b1 100) (eq? a1 b1) >#t (equal? a1 b1) >#t
アトムかどうかを判定する。リストだとfalseを返す
リストであるかどうかの判定に使える
リストであるかどうかの判定に使える
(define atom? (lambda (a) (and (not (pair? a)) (not (null? a)))) )
lat(アトムだけが入っているリスト)であるかどうかの判定
(define lat? (lambda (la) (cond ((null? la) #t) ((atom? (car la)) (lat? (cdr la))) (else #f) ) ))
コメントをかく