精益传递类型作为参数

Lean pass type as parameter

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

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

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

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

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

我假设您希望 pset 类似于“pointed sets”。那么它的定义应该是

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

现在您会注意到 #check pset 告诉您它的类型为 Type 1。所以你仍然不能把它变成 category,因为你只定义了“小”类别。如果在category的定义中把Type改成Type*,应该一切正常。