5.比較(Comparisons)

Dylanは同一性判定関数(identity function)のみならず、一群の等号 (equality、[訳注]イコールとも訳す)および大小比較の関数でユーザクラスに対して 拡張可能なものを提供する。
◆ここでいう identity functionとは、その他の操作(Other Operations)の章で 述べられている恒等関数 identity のことではなく、== のことであろう。 また等号(イコール)と言っているのが = のことである。
メソッド~=,>, <=,>=は=< を用いて定義される。=<の振る舞いを拡張することで、 それ以外のメソッドを拡張するプログラムも作成できる。

(これらの関数を呼び出すときの)呼び出し規約(protocol)が正しく機能するために、 =<のすべてのメソッドは次の性質を満たさなければならない。

  1. 同値判定 (Equality Comparisons)

  2. 大きさの比較 (Magnitude Comparisons)


[1]三分性 は反対称性[もし (a <b) ならば ~(b < a)] および非反射性 (antireflexivity )[ もし(a == b)ならば ~(a < b))]をも導く。 さらにまた、=に関する可換性 [もし(a = b)ならば(b = a)]をも導く。

[2]IEEE の浮動小数点比較については三分性は成り立たない。 IEEEはもしオペランドのどれかが NaNなら、すべての比較が偽を返すことを要求している。 したがってDylanの等号および大小比較述語総称関数はIEEE 標準にしたがってはいない。


目次 索引関数(次章)