我正在尝试不同的数据结构来实现Prim的算法.所以我创建了一个类来抽象我想要做的事情:
class VertexContainer a where
contains :: a -> Vertex -> Bool
insert :: a -> WeightedEdge -> a
numVertices :: a -> Int
Run Code Online (Sandbox Code Playgroud)
现在我想使用堆(from Data.Heap)作为我的顶点容器.但我不能为我的生活弄清楚语法.从insert声明中可以看出,容器只能包含WeightedEdges,这是一种数据类型.所以我尝试过:
instance VertexContainer (Heap MinPolicy WeightedEdge) where
contains _ _ = True
Run Code Online (Sandbox Code Playgroud)
它告诉我这是一个非法类型的同义词.我尝试了其他各种排列,但似乎都没有.谁能帮我?
如果您阅读完整的错误消息,您会发现它告诉您如何在实例声明中使用类型同义词,即使用语言扩展名TypeSynonymInstances.例如,您可以在命令行上传递-XTypeSynonymInstances.