如何消除冲突的构造函数名称的歧义

How to disambiguate clashing constructor names

参见标准库中的示例 Data.Maybe.Base — 所有 MaybeAnyAll 都有一个 just 构造函数。

Agda 允许这些定义。如何指定使用哪一个?

每种数据类型都有自己的模块。所以 MaybeAllAny 同时都是类型构造函数和模块。因此,您可以编写 Maybe.justAll.justAny.just 来消除构造函数的歧义。或者它可以通过类型推断(统一是一个更合适的术语)或像 Thilo 在他们的评论中所说的显式类型签名来消除歧义。 (然而,如果有一些歧义,你会得到一个错误是不正确的——你会得到一个未解决的元数据)。