为什么 idris 中的这两个元组相等?
Why are these two tuples in idris equal?
我正在阅读 Type driven development with Idris,其中一个练习要求 reader 定义一个类型 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
和另一个元组组成。
查看 http://docs.idris-lang.org/en/latest/tutorial/typesfuns.html#tuples 上的文档,您可以看到元组表示为嵌套对。
因此 (x, y, z) == (x, (y, z))
每个 x
、y
、z
我正在阅读 Type driven development with Idris,其中一个练习要求 reader 定义一个类型 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
和另一个元组组成。
查看 http://docs.idris-lang.org/en/latest/tutorial/typesfuns.html#tuples 上的文档,您可以看到元组表示为嵌套对。
因此 (x, y, z) == (x, (y, z))
每个 x
、y
、z