我真的不明白.为什么我们需要它呢?我的意思是如果我使用相同的类型参数,我认为这意味着它们应该是相同的类型.
原文链接:https://www.f2er.com/javaschema/281518.html我听说它可以帮助编译器避免无限循环.有人可以告诉我一些更多细节吗?
最后,我们应该遵循Real World Haskell中功能依赖的使用的任何“模式和实践”吗?
[后续问题]
class Extract container element where extract :: container -> element instance Extract (a,b) a where extract (x,_) = x
在上面的代码中,我对容器和元素使用了相同的类型变量’a’,我认为编译器可以因此推断这两种类型是相同的类型.
但是当我在GHCi中尝试这个代码时,我收到了以下反馈:
*Main> extract('x',3) <interactive>:1:0: No instance for (Extract (Char,t) element) arising from a use of `extract' at <interactive>:1:0-13 Possible fix: add an instance declaration for (Extract (Char,t) element) In the expression: extract ('x',3) In the definition of `it': it = extract ('x',3)
当其中一个被指定为类型’Char’时,为什么另一个仍未解析类型’element’?