【发布时间】:2019-02-13 23:11:35
【问题描述】:
我正在尝试在 Idris 中编写 chop 函数。 Haskell 等价物看起来像:
chop :: Int -> [t] -> [[t]]
chop n [] = []
chop n v = take n v : chop n (drop n v)
我在 Idris 的初步尝试如下:
chop : (n : Nat) -> Vect (k * n) a -> Vect k (Vect n a)
chop n Nil = Nil
chop n v = (take n v) :: (chop n (drop n v))
类型检查错误:
Type mismatch between
Vect 0 a (Type of [])
and
Vect (mult k n) a (Expected type)
Specifically:
Type mismatch between
0
and
mult k n
【问题讨论】:
标签: types functional-programming idris dependent-type