为什么idris中的这两个元组相等?

时间:2017-10-19 07:24:55

标签: idris

我正在阅读Type driven development with Idris,其中一个练习要求读者定义类型TupleVect,以便向量可以表示为:

TupleVect 2 ty = (ty, (ty, ()))

我通过定义以下类型解决了它:

TupleVect : Nat -> Type -> Type
TupleVect Z ty = ()
TupleVect (S k) ty = (ty, TupleVect k ty)

以下测试类型检查:

test : TupleVect 4 Nat
test = (1,2,3,4,())

我的问题是,为什么(1,2,3,4,()) == (1,(2,(3,(4,()))))?我原以为右手边是一个2元组,由Int和另一个元组组成。

1 个答案:

答案 0 :(得分:7)

检查http://docs.idris-lang.org/en/latest/tutorial/typesfuns.html#tuples处的文档,您可以看到元组表示为嵌套对。

因此(x, y, z) == (x, (y, z))xy

z setState