我有一个非常简单的代码如下:覆盖率条件失败
{-# LANGUAGE
MultiParamTypeClasses,
FunctionalDependencies,
FlexibleInstances,
FlexibleContexts
#-}
class Graph g n e | g -> n e where
nodes :: g -> [n]
edge :: g -> (n,n) -> Maybe e
instance Graph g Int e where
nodes g = []
edge g (n1,n2) = Nothing
我得到了相关的覆盖条件的误差为函数依赖的一个失败。我需要添加-XUndecidableInstances来允许这个吗?或者我如何解决这个问题?谢谢
你的函数依赖性表明,你选择'g'类型的选择分别决定你的节点和元素类型'n'和'e'。那么,说所有图形类型'g'(不知道关于'g')是否确定节点类型是'Int'? – sabauma
@sabauma,谢谢!我从来不知道覆盖情况如何,但这个小例子显示了我! :-) – luqui
@luqui嘿,我从来没有听说过“覆盖条件”之前。我只是推理代码。 – sabauma