6.8 KiB
6.8 KiB
title | author | date | url | wordtwit_post_info | categories | |||
---|---|---|---|---|---|---|---|---|
等価性 | kazu634 | 2008-08-04 | /2008/08/04/_1063/ |
|
|
「二つのオブジェクトAとBが等しいとはどういうことでしょうか?」これには色々な意味があるよ。
内容が同じという場合
二つのリストがあった場合、それぞれの要素を順に比較し、全て等しければ元のリストも等しいという立場での比較。
gosh> (equal? (list 1 2 3) (list 1 2 3)) #t gosh> (equal? (list 1 2 (list 3 4) 5) (cons 1 (cons 2 '((3 4) . (5))))) #t gosh> (equal? (list 1 2 3) (list 1 2 4)) #f
入れ物が同じ
他の値を入れておく入れ物の同一性を調べるもの。C言語を知っている人は、eq?はオブジェクトの「アドレス」を比較していると考えていい。
gosh> (eq? (cons 1 2) (cons 1 2)) #f gosh> (define p (cons 1 2)) p gosh> (eq? p p) #t
数値として同じ
数値として比較する場合。
gosh> (eqv? 1 1) #t gosh> (eqv? 1.0 1.0) #t gosh> (eqv? 1 1.0) #f gosh> (= 1 1.0) #t gosh> (char=? #\a #\a) #t gosh> (char=? #\a #\A) #f gosh> (string=? "abc" "abc") #t gosh> (string=? "abc" "ABC") #f
- 「gauche」に関連する最近のエントリ