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