【发布时间】:2014-08-21 20:52:03
【问题描述】:
阅读UndecidableInstances我了解this question中我的问题相当于:
class Convert a b | a -> b where
convert :: a -> b
instance Convert a b => Convert [a] [b] where
convert = map convert
我理解为什么需要“UndecidableInstance”以及(某种)类型检查器在某些情况下可以循环的原因。但是,我仍然不明白它如何违反“覆盖条件”。我的意思是,当我阅读定义时
对于类的每个函数依赖
tvsleft -> tvsright,每个类型变量在S(tvsright)必须出现在S(tvsleft)中,其中S是每个类型的替换映射 类声明中的变量到实例声明中的相应类型。
前面的例子似乎满足了这个定义。我知道它没有,但我不明白为什么(我可能不太明白)。
【问题讨论】:
标签: haskell