2
我有一種感覺,這是不可能的,但會喜歡一些輸入,看看是否有一些擴展或技術我失蹤。是否可以組合類型類的實例?
我有一個定義了一些默認的方法類型類的泛型實例:
class TestClass a where
foo :: a -> Maybe Text
bar :: a -> [Int]
instance TestClass a where
foo _ = Nothing
bar _ = []
data SpecificType = SomeValue | OtherValue
instance TestClass SpecificType where
foo SomeValue = Just "Success"
foo OtherValue = Just "Other Success"
我相信這已經需要OverlappingInstances
,但問題是,對於TestClass
的SpecificType
比如沒有實現bar
。我只想聲明第二個實例的一部分,並對其餘部分使用默認實現。有沒有辦法做到這一點?
還有其他的方法來結合實例嗎?無可否認,我的用例比我提出的要複雜得多。例如,如果默認實例還需要「Show」呢? ('instance Show a => TestClass a where ...' – jkeuhlen
@jkeuhlen好,然後問一個更具體的問題。 – leftaroundabout
@leftaroundabout:我可能會這樣做,但我也從這個答案中學到了一些東西,這對問題很有幫助。問,所以我不只是要編輯我現在的問題,或者要求一個新的沒有第一個跟隨在這裏。 – jkeuhlen