C# with "code contracts" allows you to annotate function arguments with valid ranges which will be statically checked at compile time. It's quite verbose though.
https://docs.microsoft.com/en-us/dotnet/framework/debug-trac...
Re:Yes, Python is Slow, and I Don’t Care
by Jtsummers on Friday September 08, 2017 @10:42AM
(#15200505)
Not without extra-compiler tooling like other static analysis tools, you're probably correct. I haven't had a chance to use much Ada, it's always been a pleasure for me to work in because I get to use things like the above to make my code so much clearer.
Re:Yes, Python is Slow, and I Don’t Care
by Someone on Friday September 08, 2017 @12:43PM
(#15201756)
I think you can get quite far in C++ with a class that has a constexpr constructor taking a double that checks for range, and (quite a few) operator overloads that allow one to do the normal operations on such quantities.
I can't think of any typed language I've used or seen in active modern professional work where you could validate a value as part of a type at compile time.