A FullCompare function satisfies all the invariants stated below for
RankCompare's relation with KeyCompare.
In addition, its equality is as precise as the KeyCompare
comparison defined below, in that, for all Keys x and y,
FullCompare(x, y) === 0 iff KeyCompare(x, y) === 0.
For non-Key inputs, a FullCompare should be exactly as imprecise as
RankCompare. For example, both will treat all errors as in the same
equivalence class. Both will treat all promises as in the same
equivalence class. Both will order tagged records the same way, which is
admittedly weird because some (such as CopySets, CopyBags, and CopyMaps)
will be considered Keys while others will be considered non-Keys.
A
FullCompare
function satisfies all the invariants stated below forRankCompare
's relation with KeyCompare. In addition, its equality is as precise as theKeyCompare
comparison defined below, in that, for all Keysx
andy
,FullCompare(x, y) === 0
iffKeyCompare(x, y) === 0
.For non-Key inputs, a
FullCompare
should be exactly as imprecise asRankCompare
. For example, both will treat all errors as in the same equivalence class. Both will treat all promises as in the same equivalence class. Both will order tagged records the same way, which is admittedly weird because some (such as CopySets, CopyBags, and CopyMaps) will be considered Keys while others will be considered non-Keys.