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