2017-10-19 43 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

回答

相關問題