Types 这是功能子类型关系的示例吗?

Types 这是功能子类型关系的示例吗?,types,covariance,typing,subtyping,generic-variance,Types,Covariance,Typing,Subtyping,Generic Variance,你可以看到一张幻灯片,上面写着 : 假设您有两种函数类型: type A = IntSet => NonEmpty type B = NonEmtpy => IntSet 根据Liskov替换原则,以下哪项是正确的 A我认为它暗示了(可能在上一课中提到过?)非空是IntSet的一个子类型。根据奥德斯基说话的方式,听起来像是NonEmpty是IntSets的子集,这些子集不是空的。因此A接受的参数值比B多,返回的值子集比B的值子集窄,这是一个具有附加属性的子集。这是有意义的。这是一

你可以看到一张幻灯片,上面写着

:

假设您有两种函数类型:

type A = IntSet => NonEmpty
type B = NonEmtpy => IntSet
根据Liskov替换原则,以下哪项是正确的


  • A我认为它暗示了(可能在上一课中提到过?)非空
    IntSet
    的一个子类型。根据奥德斯基说话的方式,听起来像是
    NonEmpty
    IntSet
    s的子集,这些子集不是空的。因此
    A
    接受的参数值比
    B
    多,返回的值子集比
    B
    的值子集窄,这是一个具有附加属性的子集。

    这是有意义的。这是一个多么奇怪的例子,如果这就是他的意思,那么用
    NonEmptyIntSet
    EmptyIntSet
    来表示
    IntSet
    (我想)会更清楚,而不是孤立地表示。