0

たとえば、型AB、およびCが与えられた場合: A × B × C =( A × BC = A ×( B × C ) は true ですか、それともタプルは常に「フラット化」されていますか? 直観的に連想的であることがわかりますが、一方で、それはタプルのタプルが不可能であることを意味します。私が見つけたどのリソースにも、type product 演算子のプロパティについての言及は見つかりませんでした。ウィキペディアのページでは、product の種類について説明していますが、演算子自体についてはあまり詳しく説明していません。

4

1 に答える 1

1

技術的には、それは連想的ですが、それをどのように使用しているか、およびその定義にどれだけ準拠したいか (または必要とするか) によって少し異なります。多くの型システムでは、2 型タプルしかなく、3 つ以上の型を含むすべての製品型は、型の 1 つが別の 2 型タプルである 2 型タプルにすぎません:(A, B, C) ~= ((A, B), C)または(A, B, C) ~= (A, (B, C)). これら 2 つのうちどちらに到達するかは、定義によって異なります。単純な左から右への解析は、おそらく後者のバージョンで終わるでしょう。

しかし、結局のところ、それは本当に問題ではありません。これは型理論に関するものなので、型は常に正確にわかっています。そのため、タプルのタプルに「不明な」タプルを含めることはできませんでした。その内側のタプルの型も知られています。(A, B, (C, D, E))そして、型を知っていて、タプルのタプルがあることを知っている場合、 と の間に実際の違いはありません(A, B, C, D, E)。結局のところ、その「内側のタプル」がどこで始まりどこで終わるかはわかっています。また、型システムで を作成する必要がある場合でも(A, (B, (C, (D, E))))、それは実際には問題ではありません。

于 2014-12-27T11:49:22.493 に答える