复合运算符&lt ;:在具有类型系统的语言中意味着什么?

时间:2017-07-24 23:30:03

标签: types covariance contravariance

复合算子"<:"或">:"是什么意思?
我在类型系统,协方差/逆变的讨论中看到了这一点 我对任何大量使用类型系统的编程范例都不是很熟悉 讨论链接:https://news.ycombinator.com/item?id=14831290
当链接停滞时,这里有一些相关的文字:
协方差和逆变只是单调性和反单调性,适用于通过子类型排序的类型。

那就是:如果我们在类型上有一个函数,比如,函数f定义为:

f(x) = Int -> x

然后我们说f是协变的,因为它是单调的:它保留了其参数的子类型顺序。那就是:

if x <: y, then f(x) <: f(y)

同样,如果我们考虑定义f

f(x) = x -> Int

然后这个f是逆变的,因为它是反单调的:它反转了它的参数的子类型排序。那就是:

if x <: y, then f(y) <: f(x)

0 个答案:

没有答案