2017-10-19 99 views
6

我读Type driven development with Idris,和的一个练习要求读者限定,使得随着一个矢量可以表示一个类型TupleVect,:为什么idris中的这两个元组相等?

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

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

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

以下测试typechecks:

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

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

+2

不可能是因为'(X,Y,Z)'为'(X,(Y,Z))'语法糖? – marcosh

回答

相关问题