Walter Bright:
Oh come on. That's called a "user defined type."
This D code compiles and it throws an "Enforcement failed" Exception at runtime:
import std.typecons: Nullable;
void main() {
Nullable!int x;
int y = x;
}
With a different type system the compiler makes sure at
compile-time that x is not empty (this means the compiler makes
sure in no code paths x is used before testing it contains
something), avoiding the run-time exception.
Bye, bearophile
