【发布时间】:2020-03-11 22:46:15
【问题描述】:
我在stackexchange post 上找到了这段代码,但我对它的工作原理感到困惑。特别是,
Inductive Vector {A : Type} : nat -> Type :=
| nil : Vector 0
| cons : forall n, A -> Vector n -> Vector (S n).
(* This works. *)
Check (let n := 0 in cons n 42 nil).
在检查中,42 是否绑定到 A? A 不是必须是类型吗?我尝试将 42 替换为显然是类型的东西,比如“bool”或“Type”,这些也有效。这对我来说很有意义。但是 42 如何在那里进行类型检查?
【问题讨论】:
标签: polymorphism coq dependent-type parametric-polymorphism