一覧にある関数はとりあえず、使えそうな関数です。
現在のところ、確認は、2.6.10で行っています。
ブーリアンと等値 | ||
---|---|---|
( boolean? v) | boolean | |
論理値か判定 論理値は #t と #f 。このいずれかならば真(#t)を返し、それ以外では偽(#f)を返す。 (boolean? #t) #t (boolean? #f) #t (boolean? 1) #f | ||
( not v) | 戻り値 | |
論理の反転 v が #f ならば、真(#t)、それ以外ならば #f を返す。 (not #f) #t (not #t) #f (not '()) #f (not 0) #f | ||
( equal? s1 s2) | boolean | |
同等 equal?、eqv? と eq? はいずれも等値であれば #t 、そうでなければ、#f を返す。等値の判断は、最も厳しいのが eq? で、もっとも緩いのが equal? である。
Gimp2で試した例です。 (equal? '(a (b c)) '(a (b c) )) #t (equal? '(a (b c)) (list 'a '(b c) )) #t (equal? (make-string 5 #\a) (make-string 5 #\a)) #t (equal? "aaaaa" (make-string 5 #\a)) #t | ||
( eqv? ) | boolean | |
等しい ペア(リストを含む)、ベクターと文字列は、メモリーに占める位置が同じならば、等しいと判定。それ以外は、大まかに言えば、値が同じならば等しいと判定します。
Gimp2で試した例です。 (define a '(a b c)) a (eqv? a a) #t (define b a) b (eqv? a b) #t (eqv? '(a (b c)) '(a (b c) )) #f (eqv? '(a (b c)) (list 'a '(b c) )) #f (eqv? (make-string 5 #\a) (make-string 5 #\a)) #f (eqv? "aaaaa" (make-string 5 #\a)) #f (eqv? #\a #\a) #t (eqv? 1 1) #t
リストや文字列は、値が同じでも、同じ実体を指していない #f になります。 | ||
( eq? ) | boolean | |
同一か? 最も厳しい等価の判定。大雑把に言えば、引数が同じオブジェクトのとき #t、そうでなければ #f。
Gimp2で試した例です。 (define a '(a b c)) a (eqv? a a) #t (define b a) b (eqv? a b) #t (eq? '(a (b c)) '(a (b c) )) #f (eq? '(a (b c)) (list 'a '(b c) )) #f (eq? (make-string 5 #\a) (make-string 5 #\a)) #f (eq? "aaaaa" (make-string 5 #\a)) #f (eq? #\a #\a) #f (eq? 1 1) #f eqv?と違う結果になったの文字の比較と数値の比較。値が同じだけれど違う実体を指しているから #f になっています。 |