[英]Simple Haskell Instance Question
我正在尝试不同的数据结构来实现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
它告诉我这是一个非法类型的同义词。 我尝试了其他各种排列,但似乎都没有。 谁能帮我?
如果您阅读完整的错误消息,您会发现它告诉您如何在实例声明中使用类型同义词,即使用语言扩展名TypeSynonymInstances。 例如,您可以在命令行上传递-XTypeSynonymInstances。
我通过将其包装成新类型来实现它。 认为丑陋。 我想你必须等待一位Haskell大师回答这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.