假设A是B的子类型, (A→B)→A是(B→B)→A的子类型吗? A→(B→A)是B→(B→A)的子类型吗?
答案 0 :(得分:0)
根据Subtypes and Function Types,一种方法如下:
符号和假设:
Map<Object>
是A
(B
)的子类型 A < B
是一个函数(类型),它接收类型为X→Y
的实例并返回类型为X
的实例Y
是S1→S2
的子类型, iif T1→T2
和 {{ 1}} 要使T1 < S1
是S2 < T2
的子类型,就需要:
(A→B)→A
<(B→B)→A
和(B→B)
(身份真实)要让(A→B)
再次保留应用函数子类型,我们需要:
A < A
(根据假设为真)和(B→B) < (A→B)
(以身份为准)所以A < B
是B < B
或(A→B)→A
的子类型
尝试通过类似的分析来回答第二个问题:
(B→B)→A
是(A→B)→A < (B→B)→A
的子类型吗?