% Function EQ
Function EQ
eq x y => generalized-boolean
x - オブジェクト
y - オブジェクト
generalized-boolean - generalized-boolean
もし引数が同じであり同一のオブジェクトであればtrueを、 それ以外はfalseを返却します。
(eq 'a 'b) => false
(eq 'a 'a) => true
(eq 3 3)
=> true
OR=> false
(eq 3 3.0) => false
(eq 3.0 3.0)
=> true
OR=> false
(eq #c(3 -4) #c(3 -4))
=> true
OR=> false
(eq #c(3 -4.0) #c(3 -4)) => false
(eq (cons 'a 'b) (cons 'a 'c)) => false
(eq (cons 'a 'b) (cons 'a 'b)) => false
(eq '(a . b) '(a . b))
=> true
OR=> false
(progn (setq x (cons 'a 'b)) (eq x x)) => true
(progn (setq x '(a . b)) (eq x x)) => true
(eq #\A #\A)
=> true
OR=> false
(let ((x "Foo")) (eq x x)) => true
(eq "Foo" "Foo")
=> true
OR=> false
(eq "Foo" (copy-seq "Foo")) => false
(eq "FOO" "foo") => false
(eq "string-seq" (copy-seq "string-seq")) => false
(let ((x 5)) (eq x x))
=> true
OR=> false
なし。
なし。
なし。
eql,
equal,
equalp,
=,
3.2. コンパイル
印字したときに同じに見えるオブジェクトは、
必ずしも互いにeqで等しいとは限りません。
印字したシンボルが同じように表示されるものは、
intern関数を使用したものであれば、
通常は互いにeqで等しくなります。
しかし、同じ値を持つ数値はeqで等しい必要はありませんし、
2つの類似したリストは通常同一ではありません。
実装は、いつでも文字と数をコピーすることが許されています。
その効果のため、Common Lispではeqの引数の両方が「同じもの」のときでさえ、
その「もの」が文字と数のときは、返却値がtrueであることを保証しません。
Common Lispのほとんどの操作は、
オブジェクトの比較にeqではなくeqlを使っているか、
そうでなければデフォルトでeqlを使い、
特別に要求されたときだけeqを使用します。
しかし、下記に示す操作はeqlではなく
eqを使うように定義されており、
それらを使用するようなコードで上書きすることはできません。
catch |
getf |
throw |
get |
remf |
|
get-properties |
remprop |
Figure 5-11. つねにEQLよりEQを好む操作