我試圖實現Prim算法不同的數據結構。所以我做了一個類來抽象什麼,我想做的事:簡單哈斯克爾實例問題
class VertexContainer a where
contains :: a -> Vertex -> Bool
insert :: a -> WeightedEdge -> a
numVertices :: a -> Int
現在我想用一個堆(從Data.Heap
)作爲我的頂點容器。但我不能爲了我的生活找出語法。正如你可以從insert
聲明看,容器只能容納WeightedEdge
s,這是一種數據類型。所以我試過:
instance VertexContainer (Heap MinPolicy WeightedEdge) where
contains _ _ = True
它告訴我這是一個非法類型的同義詞。我嘗試了各種其他排列,並且它們都不起作用。誰能幫我?
對不起,應該已經更多解釋錯誤。其實我在通過這個,而且我得到了完整的錯誤信息是「在實例中的非法類型同義詞家庭應用:」 – Xodarap 2011-03-19 17:04:37
你能申報上HeapT的實例,而不是同義詞堆?掃描相關類型「Prio」的來源可能會做一些「不尋常」的事情。 – 2011-03-19 17:58:21
@stephen tetley:謝謝,這工作! – Xodarap 2011-03-19 19:47:31