【发布时间】:2019-11-19 05:39:10
【问题描述】:
Idris doc 中有以下几行:
data List a = Nil | (::) a (List a)
data Vect : Nat -> Type -> Type where
Nil : Vect Z a
(::) : a -> Vect k a -> Vect (S k) a
我假设第 1 行是 List 的类型定义,其余的是 Vect 的类型声明。 我认为应该有声明和定义,所以我查看了Idris repo 并发现:
data List : (elem : Type) -> Type where
Nil : List elem
(::) : (x : elem) -> (xs : List elem) -> List elem
这与 Vect 的类型声明具有相似的模式,所以看起来不错。但我在源代码中找不到data List a = Nil | (::) a (List a)。另外,我找不到 Vect 的类型定义。
所以,我的困惑是:
- 为什么我在源代码中找不到
data List a = Nil | (::) a (List a)? - Vect 的实际类型定义是什么?
【问题讨论】:
-
为什么投反对票?
标签: types programming-languages idris dependent-type