集合族迪卡尔积(Cartesian product of a family of sets)就是 依赖函数类型 (Dependent Function Type / Dependent Arrow Type),也是索引类型(Indexed Type)迪卡尔积(Cartesian product of an indexed type)。
之所以叫《集合族迪卡尔积》,首先,这里集合就是类型的意思。迪卡尔积其实就是《代数类型 (Algebraic Types)浅析》 里说的 积类型 (Product Type)。然后,集合族 (family of sets)也可以看作为 索引类型 (Indexed Type),也就是依赖类型(Dependent Type)。
举个例子,依赖函数类型 F = a: A -> B a,当 B 不需要依赖 a 时,即F = A -> B,普通的函数类型。此时,套用 《代数类型 (Algebraic Types)浅析》 里 指数类型(Exponential Type)的概念,F = B ^ A。同时, B ^ A = B x B x ... x B, 一共 |A| 个 B 相乘, 也就是 |A| 个 B 的 积类型。
现在,将上述的逻辑,通用化(Generalize)一下,推广至依赖函数类型,
F = a: A -> B a
= (B a) ^ (a : A)
= (B a1) x (B a2) x ... x (B an)
因为A里面的不同元素a1, a2, ..., an 会产生不同 目标类型 B a1,B a2, ...,B an,所以,最终就形成了,以A里面的元素为索引的索引类型 B a1,B a2, ...,B an,而整个依赖函数类型Dependent Function Type / Dependent Arrow Type,就可以看作是这些 索引类型的积,(Cartesian product of an indexed type)。也就是,集合族迪卡尔积(Cartesian product of a family of sets)