复合算子"<:"或">:"是什么意思?
我在类型系统,协方差/逆变的讨论中看到了这一点
我对任何大量使用类型系统的编程范例都不是很熟悉
讨论链接: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)