使用以下Agda代码,B
中A₂
的定义出错:
module Whatever where
module A₁ where
data B : Set where
module A₂ where
open A₁ renaming (B to B₁)
data B : Set where
错误消息是:
Duplicate definition of module B. Previous definition of datatype
module B at /home/cactus/prog/agda/modules.agda:4,8-9
when scope checking the declaration
data B where
但是我在导入时将B
重命名为B₁
,为什么它仍会发生冲突?它有办法吗?
答案 0 :(得分:3)
问题是数据类型定义了模块和名称。您也需要重命名模块。这有效:
module Cactus where
module A₁ where
data B : Set where
module A₂ where
open A₁ renaming (B to B₁; module B to B₁)
data B : Set where
这允许您以模块方式引用构造函数,因此如果Level.suc
和ℕ
之间存在冲突,您只需编写ℕ.suc
并拥有它无需重命名诡计工作。
答案 1 :(得分:1)
对我来说这似乎是一个Agda错误。您可以在http://code.google.com/p/agda/issues/list中报告错误。