We all agree that string enums are generally a good idea when we want to limit passed in configuration values to a limited set of valid strings, so why not ensure that if 2 (or 5...) integers are passed into a constructor (looking at you Java) that they are actually all of the proper "type" of integer?
For those who don't know what I am talking about, Ada lets you do stuff like (taken from the linked book)
type Age is new Natural range 0..150;
and now you can say that the age parameter on a function is of type Age, and if you try to pass some other integer type in, it will fail.Ada's type system is so powerful that the metric system of measurements, with physics units, speed, acceleration, all that jazz, can be expressed in it.
I've seen C++ people say "but templates can do that!" but if I ask about how much eye bleed is included, they always change the topic...