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

Reply via email to