的代碼看起來是這樣的:在Haskell中,如何自動派生這樣的自定義類?
class MyAnd a where
myAnd :: (Show a) => a -> a -> String
x `myAnd` y = (show x) ++ " and " ++ (show y)
data TrafficLight = Red | Yellow | Green deriving(Show, MyAnd)
這裏MyAnd
是具有功能myAnd
一個類型的類,我認爲這是通用的,唯一的限制是a
已經到了Show
類的一個實例..
在TrafficLight
類型,它已經從Show
型類派生的。然而,當我編譯代碼時,編譯器抱怨
Can't make a derived instance of ‘MyAnd TrafficLight’:
‘MyAnd’ is not a derivable class
In the data declaration for ‘TrafficLight’
Failed, modules loaded: none.
有沒有人有關於此的想法?
真,編譯器不知道什麼方法都應該做的。但是,也許這種語言的一個有價值的補充將是一種告訴它的方式。相關:http://stackoverflow.com/a/3864801/524504 – masterxilo