【发布时间】:2015-04-20 21:04:26
【问题描述】:
我正在尝试编写一个函数mSmallest,它将两个自然数n 和m 作为输入并生成一个向量。输出向量包含具有n 成员的有限集的m 最小成员。
例如mSmallest 5 3 应该产生[FS (FS Z), FS Z, Z] 这是一个Vect 3 (Fin 5)
我想将输入参数m 限制为小于n。我试过这样的事情:
mSmallest : (n : Nat) -> (m : Nat) -> {auto p : n > m = True} -> Vect m (Fin n)
mSmallest Z Z = ?c_3
mSmallest Z (S k) = ?c_5
mSmallest (S k) m = ?c_2
由于输入p,第二种情况应该是不可能的。如何消除Z (S k) 的情况?
另外,有没有更好的方法来定义mSmallest 函数?
【问题讨论】:
标签: idris