Function 如何在Agda的记录/数据类型中存储函数?
我看过医生了。它说: 严格的正性条件排除了如下声明Function 如何在Agda的记录/数据类型中存储函数?,function,agda,Function,Agda,我看过医生了。它说: 严格的正性条件排除了如下声明 data Bad : Set where bad : (Bad → Bad) → Bad -- A B C -- A is in a negative position, B and C are OK 因为构造函数的参数类型中出现了否定的Bad。(请注意,标准函数语言(如Haskell和ML)中允许使用Bad的相应数据类型声明。) 但它没有说明是否有其他方法将函数存储在其他内容(如数据类型或记
data Bad : Set where
bad : (Bad → Bad) → Bad
-- A B C
-- A is in a negative position, B and C are OK
因为构造函数的参数类型中出现了否定的Bad。(请注意,标准函数语言(如Haskell和ML)中允许使用Bad的相应数据类型声明。)
但它没有说明是否有其他方法将函数存储在其他内容(如数据类型或记录类型)中
我也尝试过这个方法,但也不能编译:
bin-op : ∀ {ℓ} (A : Set ℓ) → Set ℓ
bin-op A = A → A → A
record Storer {ℓ} (A : Set ℓ) : Set where
field
operator : bin-op A
那么,如何在数据类型/记录类型/其他我不知道的内容中存储函数呢?问题在于
record Storer {ℓ} (A : Set ℓ) : Set where
部分。这里您声明Storer
属于集合
范围,但是Storer
包含集合中的bin op A
ℓ代码>宇宙,并且记录不能小于其字段。因此,修复方法是将Storer
定义在集合中ℓ代码>:
record Storer {ℓ} (A : Set ℓ) : Set ℓ where
严格的积极性与问题完全无关
Agda中的宇宙多态性在旧版本中有描述。问题在于
record Storer {ℓ} (A : Set ℓ) : Set where
部分。这里您声明Storer
属于集合
范围,但是Storer
包含集合中的bin op A
ℓ代码>宇宙,并且记录不能小于其字段。因此,修复方法是将Storer
定义在集合中ℓ代码>:
record Storer {ℓ} (A : Set ℓ) : Set ℓ where
严格的积极性与问题完全无关
Agda中的宇宙多态性在旧版本中有描述。每当您收到错误消息时,请发布它。如果您尝试使用记录存储器会怎么样{ℓ} (A:一套ℓ) : 设置ℓ 其中
?严格的正性条件仅适用于归纳性事件,而存储者
甚至不是归纳性的。Wtf,这是有效的。请您解释更多或提供一个链接,我可以从中阅读答案吗?我对如何在Agda中使用关键字归纳性
和共归纳性
知之甚少。谢谢!您关于宇宙多态性的一些文档。我想说的是,这里的问题不是严格的积极性,而是Storer
被定义在一个比它实际所属的(Set
)更低的宇宙(Set
)中ℓ代码>)。好的,明白了。谢谢!为什么不回答这个问题并获得一些代表?每当你收到错误消息时,请发布它。如果你尝试record Storer怎么办{ℓ} (A:一套ℓ) : 设置ℓ 其中
?严格的正性条件仅适用于归纳性事件,而存储者
甚至不是归纳性的。Wtf,这是有效的。请您解释更多或提供一个链接,我可以从中阅读答案吗?我对如何在Agda中使用关键字归纳性
和共归纳性
知之甚少。谢谢!您关于宇宙多态性的一些文档。我想说的是,这里的问题不是严格的积极性,而是Storer
被定义在一个比它实际所属的(Set
)更低的宇宙(Set
)中ℓ代码>)。好的,明白了。谢谢!为什么不回答这个问题并接待一些代表呢?