在这段代码中,我试图使我的工作程序函数go中的第一个参数成为“类型家族”类型。我看到在类型类型族文档中,类似的insert函数属于类型类,而在下面的示例中不会。

我是家庭类型的新手,所以也许我在错误地使用它们,但这是什么意思? 通用标签

约束中模棱两可的类型变量'a': 通用标签

可能的修复:添加可修复的类型签名 这些类型变量

有帮助吗?

解决方案

它将编译: 通用标签

我更改了什么,为什么?

首先,我假设您想要对M的约束,所以我使用了一种类型定义形式,该类型强制实施该约束并将其在使用站点上可用,即GADT

第二,您的GHC抱怨的问题是模棱两可。关键在于,编译器无法推断出应该使用的 mkI,因此我们必须告诉它。为此,我们必须将使用的类型变量引入作用域,然后在本地签名中告诉编译器要使用哪个类型实例。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top