On 24.5.2013. 1:58, bearophile wrote:
Peter Alexander:

What about code that relies on overflow? It's well-defined behaviour,
so it should be expected that people rely on it (I certainly do
sometimes)

Do you rely on signed or unsigned overflow?

My opinions on this topic have changed few times.

A modern system language should offer the programmer both integral types
for the rare situations where the overflow or wrap around are expected
or acceptable, and other "default" integral types to be used in all the
other situations, where overflow or wrap-around are unexpected and not
desired. The implementation then should offer ways to optionally perform
run-time tests on the second group of integrals.

A very good system language should also offer various means to
statically verify the bounds of a certain percentage of values and
expression results, to reduce the amount of run-time tests needed (here
things like "Liquid Types" help).

D currently doesn't have such safe built-in types, and it doesn't offer
means to create such efficient types in library code. I think such means
should be provided:
http://d.puremagic.com/issues/show_bug.cgi?id=9850

Bye,
bearophile

I agree completely!

Would it maybe be a good consensus to allow operator overloading and invariants for primitive types?

Or is there a reason why that is a bad idea?

Reply via email to