Re:The Value of Undefined Behavior
by jgibson on Saturday July 21, 2018 @06:14PM
(#17584134)
Doesn't Ada have this ability where you define numeric types with a range?
[ Parent
| on HN ]
Yes, like so
type jump_by_tenth is delta 0.1 range 1.0 .. 99.0;Yes but afaik it translates to runtime checks.
Re:The Value of Undefined Behavior
by red75prime on Sunday July 22, 2018 @03:09AM
(#17585621)
It cannot be done in compile-time in general case. Rice's theorem forbids. Every non-trivial property of a program (like whether result of this function lies in this range for all inputs in that range) is undecidable.
ETA: I'm not completely correct. Ada could have used something akin to 2-complement overflow handling, that is forcing every operation on a range to have a result in the same range, but it introduces runtime overhead too.