删除类型构造函数中的参数意味着什么?例如
data Foo : (0 _ : Nat) -> Type where
相对于
data Foo : Nat -> Type where
我的理解是,类型构造函数中的任何内容都不会在运行时使用,因此它实际上始终为 0。我想这还会导致一个可能更令人困惑的问题:线性参数在类型构造函数中意味着什么,但那是另一天的事了。
删除类型构造函数中的参数意味着什么?例如
data Foo : (0 _ : Nat) -> Type where
相对于
data Foo : Nat -> Type where
我的理解是,类型构造函数中的任何内容都不会在运行时使用,因此它实际上始终为 0。我想这还会导致一个可能更令人困惑的问题:线性参数在类型构造函数中意味着什么,但那是另一天的事了。
Idris (2) 有点不寻常,因为它允许对类型进行直接模式匹配。类型构造函数被视为的
Type
构造函数。比如说,如果你擦除了 的
Fin
参数,那么与Type
with匹配也Fin n
会使n
擦除。