这是一个初学者的问题,但我无法在任何地方找到任何答案。
以下代码:
class A a where
foo :: a
class A a => B a where
bar :: a
bar = (foo :: a)
无法在 GHC 中编译,并显示错误消息:
Could not deduce (A a1) arising from a use of `foo'
from the context (B a)
bound by the class declaration for `B'
...
GHC 似乎不相信 typeclass B 定义中的所有 a 都是相同的。谁能解释一下它的推理路线到底是什么?
删除第 5 行中的类型注释当然可以避免这个问题,但我仍然想了解这里发生了什么......