eq、eql、equal、equalpの違いについて
今回は Common Lisp の eq、eql、equal、equalpの違いについて書いていきます。
- eq
eq は 第一引数と第二引数が同じオブジェクトの場合、true を返します。 eq は主にシンボル同士を比較する場合に使用します。
- eql
eql は eq が true を返す場合と、数字とcharacterの比較も行うことができます。 eq と違い、数字同士の比較と文字同士の比較が true を返しています。
- equal
equal はオブジェクトのストラクチャが同一の場合、true を返します。基本的には print で同じ値が出力される場合に true が返ります。 equal はシンボル以外を比較する際に使用します。eq や eql と違い、文字列やコンスセルの比較でも true を返しています。シンボル同士を比較する場合は eq のほうが性能が良いです。
- equalp
equalp は equal が true を返します。equal と違う部分は:
- 数字のデータ型を区別しない。
- 大文字小文字を区別しない。
の二点です。
参考
CLHS: Function EQ
CLHS: Function EQL
CLHS: Function EQUAL
CLHS: Function EQUALP
syntax - What's the difference between eq, eql, equal and equalp, in Common Lisp? - Stack Overflow