So, if we have another function and we call it with a noun of that type, we know the range of the input, we know the code in the function, we can infer the range of the output. It's not terribly rocket scientific.
So, if we have another function and we call it with a noun of that type, we know the range of the input, we know the code in the function, we can infer the range of the output. It's not terribly rocket scientific.
I think you're saying a type is the range of inputs to function1 which succeed by not crashing; given function2 and a noun in the type, we may use function1 to infer the range of values which function2 must accept? Maybe?
In any language, a type defines a set of values and some semantics for manipulating those values. It so happens that our way of defining common sets is to build a function whose range is some useful set.
Actually any gene (ie, expression) has a product range. It doesn't even need to be a function. So the range of the constant
[%foo %bar]
whatever the subject is, is always [%foo %bar], ie, the pair [7.303.014 7.496.034].
You're not a big believer in airbags, are ya.
Generally we don't actually use these functions unless we're normalizing foreign data. Then, we do. Because anyone on the Internets can send a bull into your steer pen...
Mathematicians keep all three words around because each of them has its use.