给出两个功能:
f :: EvenInteger -> {0}
g :: OddInteger -> {1}
考虑功能
h = (x :: Integer) => {
if(x is even)return f(x);
return g(x);
}
T的最小类型为何
h :: T
我一直以为只是
h :: (typeof f) & (typeof g)
但是后来我也认为函数调用分布在联合上,即
x :: EvenInteger
h(x) :: (typeof f(x)) & (typeof g(x))
这引出了另一个问题:
什么是
(OddInteger -> {1})(EvenInteger)