Go to the first, previous, next, last section, table of contents.

Equalityプレディケート

2 つの要素の equality を調べる関数が 2 つあります。以下、それらについて述べま す。特定のタイプのオブジェクトの equality を調べる関数も存在しています。それら のプレディケートに関してはそれぞれのタイプに関するチャプターを参照して下さい。

Function: eq object1 object2

この関数は、2 つのオブジェクトが同じオブジェクトである場合 t を返し、そう でない場合 nil を返します。同じ print 名を持つシンボルは常に eq です (uninterned シンボルに関してはどうだろう??)。同じ値の数値は eq です。その 他のオブジェクト(e.g., リスト、ベクトル、ストリング)で同じ要素からなるもの は eq であることもないこともありえます。

また、2 つのオブジェクトが互いに eqである場合、一方を変更すると、その変更 は他方に対しても行なわれます。

  (eq 'foo 'foo)
       => t
  (eq 456 456)
       => t
  (eq "asdf" "asdf")
       => t
  (eq '(1 (2 (3))) '(1 (2 (3))))
       => nil
  (eq (point-marker) (point-marker))
       => nil

Function: equal object1 object2

この関数は、2 つのオブジェクトが構造的に同じものである場合 t を返し、そう でない場合 nil を返します。 eq なオブジェクト(特に primitive オブジェクト) はまた equal でもあります。リスト、ベクトル、マーカー、ストリングは対応す

る(それぞれの)要素が equal である場合 equal です。

  (equal "asdf" "asdf")
       => t
  (equal "asdf" "ASDF")
       => nil
  (eq '(1 (2 (3))) '(1 (2 (3))))
       => t
  (eq [(1 2) 3] [(1 2) 3])
       => t
  (eq (point-marker) (point-marker))
       => t


Go to the first, previous, next, last section, table of contents.