Function EQL

UP


Function EQL

Function EQL

構文

eql x y => generalized-boolean

引数と戻り値

x - オブジェクト
y - オブジェクト
generalized-boolean - generalized-boolean

定義

eqlの返却値は、2つのオブジェクトxyが 下記の場合にtrueになります。

  1. もしxyeqのとき
  2. もしxyが両方とも数であり、同じ型で同じ値のとき
  3. もしxyが両方とも文字であり、同じ文字として表現されるとき

それ以外のときは、eqlの値はfalseです。

もし実装が正と負のゼロを違う値としてサポートするときは、 (eql 0.0 -0.0)falseが返却します。 そうでなければ-0.0という構文を読んだとき、 それは0.0という値として解釈されるので (eql 0.0 -0.0)trueを返却します。

例文

(eql 'a 'b) =>  false
(eql 'a 'a) =>  true
(eql 3 3) =>  true
(eql 3 3.0) =>  false
(eql 3.0 3.0) =>  true
(eql #c(3 -4) #c(3 -4)) =>  true
(eql #c(3 -4.0) #c(3 -4)) =>  false
(eql (cons 'a 'b) (cons 'a 'c)) =>  false
(eql (cons 'a 'b) (cons 'a 'b)) =>  false
(eql '(a . b) '(a . b))
=>  true
OR=>  false
(progn (setq x (cons 'a 'b)) (eql x x)) =>  true
(progn (setq x '(a . b)) (eql x x)) =>  true
(eql #\A #\A) =>  true
(eql "Foo" "Foo")
=>  true
OR=>  false
(eql "Foo" (copy-seq "Foo")) =>  false
(eql "FOO" "foo") =>  false

通常、1.0s01.0d0が違うデータの型だと仮定した場合において、 (eql 1.0s0 1.0d0)falseです。 しかし実装は、異なった4つの浮動小数の型を提供する必要はなく、 4つの型をいくつかの小さい型に潰してしまっても許されます。 そのような実装では(eql 1.0s0 1.0d0)trueになるかもしれません。

副作用

なし。

影響

なし。

例外

なし。

参考

eq, equal, equalp, =, char=

備考

eqleqと同じですが、 引数が文字か数の同じ型であり それらの値を比較するときが違っています。 したがって、eqlは 2つのオブジェクトが概念的に等いかどうを言っており、 一方eqは2つのオブジェクトが 実装的に同一であるかどうかを言っています。 このような理由により、 シーケンスを引数として受け取ったオペレーターの叙述部が デフォルトで比較を行う際に、 eqではなくeqlを使用します。

eqlは、2つの浮動小数が同じ値と表現されているときでさえ、 真にならないかもしれません。 =は数学的な値を比較する際に使われます。

2つの複素数は、 実部がeqlで虚部がeqlであれば eqlとみなされます。 例えば、(eql #C(4 5) #C(4 5))trueであり、 (eql #C(4 5) #C(4.0 5.0))falseです。 (eql #C(5.0 0.0) 5.0)falseであり、 (eql #C(5 0) 5)trueであることに注意してください。 (eql #C(5 0) 5)の場合は、#C(5 0)が複素数ではなく、 それは整数5に自動的に変換されます。


TOP, Github