0

例如,给定类型ABCA × B × C =( A × BC = A ×( B × C ) 是真的,还是元组总是“扁平化”?直觉会告诉我它关联的,但另一方面这意味着元组的元组是不可能的。我发现在我能找到的任何资源中都没有提到类型产品运算符的属性 -维基百科页面描述了产品类型,但没有详细介绍运算符本身。

4

1 回答 1

1

从技术上讲,它是关联的,但这在一定程度上取决于您如何使用它以及您希望(或需要)多少遵守它的定义。在许多类型系统中,您只有两种类型的元组,并且每个包含两种以上类型的产品类型只是两种类型的元组,其中一种类型是另一个 2 类型的元组:(A, B, C) ~= ((A, B), C)(A, B, C) ~= (A, (B, C)). 现在你最终得到这两个中的哪一个取决于你的定义。一个简单的从左到右的解析可能会以后一个版本结束。

但最终,这并不重要。因为这是关于类型理论的,所以类型总是完全已知的;所以一个元组的元组不能包含一些“未知”的元组。该内部元组的类型也将是已知的。当你知道类型,并且你知道有一个元组的元组时,和之间(A, B, (C, D, E))并没有真正的区别(A, B, C, D, E)。毕竟,您知道“内部元组”的开始和结束位置。如果类型系统需要你做(A, (B, (C, (D, E)))),那也不是什么问题。

于 2014-12-27T11:49:22.493 回答