精益传递类型作为参数

问题描述

我正在尝试用精益做一些类别理论。但是,我对类型理论还不是很流利,以下内容似乎并不奏效:

class pset (S: Type) :=
(point: S)

class category (?: Type) :=
(test: unit)

instance pset_category : category pset :=
{
  test := ()
}

我在 category pset 处发现类型不匹配,因为 pset 的类型为 Type -> Type,而预期的类型为 Type。出了什么问题?

解决方法

我假设您希望 502 Bad Gateway 成为“pointed set”之类的东西。那么它的定义应该是

pset

现在您会注意到 class pset := (S : Type) (point : S) 告诉您它的类型为 #check pset。所以你仍然不能把它变成一个 Type 1,因为你只定义了“小”类别。如果您将 category 的定义中的 Type 更改为 Type*,一切都应该没问题。