我正在尝试使用不同的数据结构来实现 Prim 算法。因此,我创建了一个类来抽象化我想做的事情:
class VertexContainer a where
contains :: a -> Vertex -> Bool
insert :: a -> WeightedEdge -> a
numVertices :: a -> Int
现在我想使用一个堆(来自Data.Heap
)作为我的顶点容器。但是我无论如何都弄不清语法。从insert
声明中可以看出,容器只能容纳WeightedEdge
,这是一种数据类型。所以我尝试了:
instance VertexContainer (Heap MinPolicy WeightedEdge) where
contains _ _ = True
它告诉我这是一种非法的类型同义词。我尝试了各种其他排列方式,但似乎都不起作用。有人能帮我吗?