我对类型理论的上下文中的单位类型有疑问,它在不同案例场景中使用。

首先,a 单位类型可以被视为零产品类型,即单位,一个只有一个值术语,它是空元组,生成术。此外,从任何类型到单位存在一个唯一的映射。

现在,它恰好使用单位类型超出了这种微不足道的定义,并且实际上是用于代数数据类型的定义,这是产品类型的总和。具体地,可以使用单元的总和表示枚举类型的概念类型,例如在标准克中,我们可能有:

datatype suit = HEARTS | CLUBS | DIAMONDS | SPADES
.

在其中,心脏,俱乐部,钻石和黑桃是含有含比的产品类型,因此对单位的所有同构。

我的怀疑是以下内容:如果只存在单位的一个元素,那么类型系统如何区分上面的总和类型中使用的四个不同的实例(如果我们也考虑空元素,则为五个实例......)? 我理解,他们可以被认为是彼此相同的同构,但它们是基于不同的,实际上,即使只考虑我们应该在它们上模式匹配的世代odicetagcode ...

有帮助吗?

解决方案

短答案是同性类型不等于,尽管表现相同,所以类型系统可以区分它们。在一个标称类型系统中,如您描述的那样,即使它们是结构等同的,类型也基本上由他们的名称识别。这是您描述的五种单位类型的情况:它们是结构等同的,但名义上不平等,因此它们被视为截然不同。

请注意,模式匹配方面是正交的:您可以思考其在隔离中存在的五个单位类型。在大多数类型的理论中,您可以获得任何两种类型的总和,甚至两个(名义上)等于,例如, Unit + Unit。您仍然需要进行模式匹配,并且将有两个案例:左侧生成型etagcode和右类生成的。虽然许多编程语言是不重要的,但是许多编程语言将使用名称区分这样的不同案例,而不是概括的索引(特别是您只允许与不同的标称类型的语言中的语言相同标准ml)。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top