看來傳統的依賴性類型編程來定義訂單的類型參數
data Vec :: Type -> Nat -> Type where
Nil :: Vec a 'Z
Cons :: a -> Vec a n -> Vec a ('S n)
在Haskell,然而,Functor
,Applicative
,Foldable
,Traversable
,Eq1
,Ord1
,等等,似乎班作爲翻轉爭論的好例子,到Vec :: Nat -> Type -> Type
。
是否有一些常見約定的重要原因?還是僅僅是人們碰巧用於不基於類型類的語言?
對於它的價值,你不是第一個在這方面遇到的問題。 [這](https://blog.jle.im/entry/fixed-length-vector-types-in-haskell-2015.html)文章(這使得你提到的大多數類的實例)也有'Vec: :Nat - > Type - > Type'。 – Alec
'Type - > Nat - > Type'只是數學('³³'等等)和不識字的語言('std :: array')中常見的順序。 Currying是Haskell命令有用的原因。 –
leftaroundabout
[This](http://stackoverflow.com/a/40252235/3072788)如果'Nat'沒有出現在最後的位置,那麼帶'Bump'的技巧是不可能的。 – Alec