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

时间:2017-09-13 04:43:12

标签: agda

例如,请参阅stdlib中的Data.Maybe.Base - 所有MaybeAnyAll都有just个构造函数。

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

1 个答案:

答案 0 :(得分:5)

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