为什么 Agda 拒绝 Set₁ → Set₁?
Why is Agda refusing Set₁ → Set₁?
代码如下:
Continuation : Set → Set₁ → Set₁
Continuation R X = (X → R) → R
Selection : Set → Set₁ → Set₁
Selection R X = (X → R) → X
dagger : {R : Set} → Selection R → Continuation R
dagger S X k = k (S k)
出于其他原因,我需要延续和选择才能使用更高的宇宙。但随后 dagger 的定义引发了一个错误:
(Set₁ → Set₁) should be a sort, but it isn't when checking that the inferred type of an application
Set₁ → Set₁
matches the expected type _16
在 Agda 中 _→_
是函数 space 不属于任何类别,而是类型和
职能。我的猜测是您想要以下内容:
dagger : {R : Set} → ∀ X → Selection R X → Continuation R X
dagger X S k = k (S k)
即索引类型和索引保留函数的函数 space。
或者,您可以使用 stdlib 的
Relation.Unary
态射的概念并写成:
open import Relation.Unary
dagger : {R : Set} → Selection R ⊆ Continuation R
dagger S k = k (S k)
代码如下:
Continuation : Set → Set₁ → Set₁
Continuation R X = (X → R) → R
Selection : Set → Set₁ → Set₁
Selection R X = (X → R) → X
dagger : {R : Set} → Selection R → Continuation R
dagger S X k = k (S k)
出于其他原因,我需要延续和选择才能使用更高的宇宙。但随后 dagger 的定义引发了一个错误:
(Set₁ → Set₁) should be a sort, but it isn't when checking that the inferred type of an application Set₁ → Set₁ matches the expected type _16
在 Agda 中 _→_
是函数 space 不属于任何类别,而是类型和
职能。我的猜测是您想要以下内容:
dagger : {R : Set} → ∀ X → Selection R X → Continuation R X
dagger X S k = k (S k)
即索引类型和索引保留函数的函数 space。
或者,您可以使用 stdlib 的
Relation.Unary
态射的概念并写成:
open import Relation.Unary
dagger : {R : Set} → Selection R ⊆ Continuation R
dagger S k = k (S k)