简单的Haskell实例问题

Xod*_*rap 3 haskell

我正在尝试不同的数据结构来实现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)

它告诉我这是一个非法类型的同义词.我尝试了其他各种排列,但似乎都没有.谁能帮我?

aug*_*tss 6

如果您阅读完整的错误消息,您会发现它告诉您如何在实例声明中使用类型同义词,即使用语言扩展名TypeSynonymInstances.例如,您可以在命令行上传递-XTypeSynonymInstances.

  • 你能在HeapT上声明实例而不是同义词Heap吗?扫描源相关的类型`Prio`可能正在做一些"不寻常"的事情. (2认同)