繁体   English   中英

简单的Haskell实例问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM