On Monday, 27 January 2014 at 14:13:36 UTC, Timon Gehr wrote:
So? It was the most convenient way to illustrate that I have
defined a not fully ordered type using opCmp.
Was not my idea to deprecate them :-/
And you cannot opverload opCmp in a way that the new defined
integer NaN
will not compare in some way to the other integer values.
Of course you can. Just return float.nan from opCmp in the case
that at least one of the arguments is your 'integer NaN'.
float opCmp(sint r){
if(isNan()||r.isNan()) return float.nan;
return value<r.value?-1:value>r.value?1:0;
}
What would be needed is a minimal signed type (2bit with the
values -1,
0, 1 and NaN) and use that in opCmp.
That's not needed in order to get correct comparison behaviour.
Ah, ok. Now I understand. not inventing a type with NaN, but
instead using one that provides it - really a nice trick. I never
thought of a comparison operator returning a float.
Cool. Thank you very much.