Function EQUAL

UP


Function EQUAL

Function EQUAL

構文

equal x y => generalized-boolean

引数と戻り値

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

定義

もしxとyが構造的に似たオブジェクト(同一構造)ならtrueを返却します。 オブジェクトはequalによって下記のように扱われます。

equalは、上記で明確に指定されたもの以外の どんなオブジェクトにも降りては行きません。 次の図は、前のリストを要約した情報です。 加えて、図にはequalのふるまいの優先順位を載せており、 上に記載されているものの方が下のものより優先順位は高くなります。

型 ふるまい
number eqlを使用
character eqlを使用
cons 降りて行く
bit vector 降りて行く
string 降りて行く
pathname 機能的に同等
structure eqを使用
他のarray eqを使用
hash table eqを使用
他のobject eqを使用

Figure 5-12. equalのふるまいの要約と優先順位

どのような2つのオブジェクトも、 eqlが成り立つなら、 equalもまた成り立ちます。

equalは、xとyが循環しているときは、 おそらく終了に失敗します。

例文

(equal 'a 'b) =>  false
(equal 'a 'a) =>  true
(equal 3 3) =>  true
(equal 3 3.0) =>  false
(equal 3.0 3.0) =>  true
(equal #c(3 -4) #c(3 -4)) =>  true
(equal #c(3 -4.0) #c(3 -4)) =>  false
(equal (cons 'a 'b) (cons 'a 'c)) =>  false
(equal (cons 'a 'b) (cons 'a 'b)) =>  true
(equal #\A #\A) =>  true
(equal #\A #\a) =>  false
(equal "Foo" "Foo") =>  true
(equal "Foo" (copy-seq "Foo")) =>  true
(equal "FOO" "foo") =>  false
(equal "This-string" "This-string") =>  true
(equal "This-string" "this-string") =>  false

副作用

なし。

影響

なし。

例外

なし。

参考

eq, eql, equalp, =, string=, string-equal, char=, char-equal, tree-equal

備考

オブジェクトの同一性は、 正しいアルゴリズムによって決められる一意性といった考え方はありません。 この同一性の関数が適切に使われる場合というのは、 ただ特定のプログラムで必要になったときの文脈でのみ判断できます。 これらの関数はどんな型の引数でも取れますし、 それらの関数名は非常に一般的に聞こえますが、 equalとequalpは全てのアプリケーションにおいて 適切に使えるものではありません。

だいたいの考え方として、2つのオブジェクトがequalであるとは、 ただ印字されたものが同じ表現であるときのみです。


TOP, Github