Don wrote:
As has been mentioned in previous posts, a ^^ b should be right
associative and have a precedence between multiplication and unary
operators. That much is clear.
Operations involving integers are far less obvious (and are actually
where a major benefit of an operator can come in).
Using the normal promotion rules, 10^^2 is an integer. The range
checking already present in D2 could be extended so that the compiler
knows it'll even fit in a byte. This gets rid of one of the classic
annoyances of C pow: int x = pow(2, 10); doesn't compile without a cast.
But the difficult question is, what's the type of 10^^-2 ? Should it be
an error? (since the result, 0.01, is not representable as an integer).
Should it return zero? (just as 1/2 doesn't return 0.5). For an example
of these semantics, see http://www.tcl.tk/cgi-bin/tct/tip/123.html).
Or should it return a double?
I think it should either be an error, or it should return a
floating-point value.
I'll even go as far as saying that I think 1/2 should either be an error
or a floating-point value -- or perhaps even a special rational type.
Integer division is not the same as "ordinary" division, and I think it
shouldn't use the same symbol. (A backslash would be better: 5\2 == 2)
Of course, I'm arguing the mathematician's point of view here. :)
-Lars