如何消除冲突的构造函数名称的歧义
How to disambiguate clashing constructor names
参见标准库中的示例 Data.Maybe.Base — 所有 Maybe
、Any
和 All
都有一个 just
构造函数。
Agda 允许这些定义。如何指定使用哪一个?
每种数据类型都有自己的模块。所以 Maybe
、All
和 Any
同时都是类型构造函数和模块。因此,您可以编写 Maybe.just
、All.just
或 Any.just
来消除构造函数的歧义。或者它可以通过类型推断(统一是一个更合适的术语)或像 Thilo 在他们的评论中所说的显式类型签名来消除歧义。 (然而,如果有一些歧义,你会得到一个错误是不正确的——你会得到一个未解决的元数据)。
参见标准库中的示例 Data.Maybe.Base — 所有 Maybe
、Any
和 All
都有一个 just
构造函数。
Agda 允许这些定义。如何指定使用哪一个?
每种数据类型都有自己的模块。所以 Maybe
、All
和 Any
同时都是类型构造函数和模块。因此,您可以编写 Maybe.just
、All.just
或 Any.just
来消除构造函数的歧义。或者它可以通过类型推断(统一是一个更合适的术语)或像 Thilo 在他们的评论中所说的显式类型签名来消除歧义。 (然而,如果有一些歧义,你会得到一个错误是不正确的——你会得到一个未解决的元数据)。