开发者

Simple Haskell Instance Question

开发者 https://www.devze.com 2023-02-18 01:29 出处:网络
I\'m trying different data structures for implementing Prim\'s algorithm. So I made a class to abstract what I want to do:

I'm trying different data structures for implementing Prim's algorithm. So I made a class to abstract what I want to do:

class VertexContainer a where
  contains :: a -> Vertex -> Bool
  insert :: a -> WeightedEdge -> a
  numVertices :: a -> Int

Now I want to use a heap (from Data.Heap) as my vertex container. But I can't for the life of me figure out the syntax. As you can see from the insert declaration, the container can only hold WeightedEdges, which are a data type. So I tried:

instance VertexContainer (Heap MinPolic开发者_运维知识库y WeightedEdge) where
  contains _ _ = True

It tells me it's an illegal type synonym. I've tried various other permutations, and none of them seem to work. Can anyone help me?


If you read the entire error message you'll find that it tells you how to be able to use a type synonym in an instance declaration, namely by using the language extension TypeSynonymInstances. E.g., you can pass -XTypeSynonymInstances on the command line.


I got it working by wrapping this into a newtype. Considered ugly. I guess you have to wait for one of the Haskell gurus to answer this.

0

精彩评论

暂无评论...
验证码 换一张
取 消