Function EQ

UP


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を好む操作


TOP, Github