Walter Bright wrote:
!<>=
<>
<>=
!<=
!<
!>=
!>
!>=
http://www.digitalmars.com/d/2.0/expression.html#RelExpression
While I like them a lot, it's time for them to go:
1. It's hard to remember which one does what
2. They've failed to catch on
3. No operator overloading for them
4. They are only rarely needed; a special operator is not justified
I think I've used them more than anyone else, and I agree. What I've
noticed is that you _always_ want to treat NaNs as a special case. In
asm, you can have a 3-way branch: eg,
cmp a, b;
jp L_nan;
jl L_less;
Lgreater_eq: // a >= b
L_less: // a < b
L_nan: // a or b is NaN.
But the NCEG operators don't let you do that. They only allow you to
chose which way NaNs should go. In almost all cases, you can replace
a!>b with !(a<=b), so the cases where they are beneficial are very, very
limited.
Currently one use is in CTFE:
isNaN(x) doesn't work in CTFE at the moment, whereas x<>=0 does. But of
course isNaN should work in CTFE.