新手在這裏共同奮鬥。Haskell:我如何定義集合的類型類?
我想爲集定義一個類型類。對於這種情況,它只需要「存在」的定義。 '存在'將在一個設置項上設置一個集合和一個函數,並且返回一個布爾型的 。我如何在Haskell中定義?
即使在正確的方向下面是以下內容?因此,有類型的類定義和實現 一套具有名單,爲此,「存在」返回現在真正..
-- Set.hs --
class Set a b where
exists :: a -> (b -> Bool) -> Bool
-- ListSet.hs --
instance Set ListSet a where
exists a f = True
-
(結果:類參數太多`設置')
當然,後者要求元素類型是set類型的最後一個類型參數 - 這並不總是可行的,就像你想爲'a - > Bool'創建一個實例一樣。另一方面,相關類型的家族可以解決這個問題。 – Carl 2012-07-16 17:37:28
謝謝!我有第二種方式工作!我必須承認,我不太明白那裏發生了什麼,但希望它可以向我展示... – tero 2012-07-16 17:42:15