是否有方法可以輕鬆「提升」Haskell中的類實例?在Haskell中提升類實例
我已經經常需要創建,例如,對於一些類,只是「提升」的Num通過類型構造這樣的結構民實例:
data SomeType a = SomeCons a
instance (Num a)=>Num SomeCons a where
(SomeCons x) + (SomeCons y) = SomeCons (x+y)
negate (SomeCons x) = SomeCons (negate x)
-- similarly for other functions.
是否有辦法避免這種情況樣板和自動「提升」這個Num結構?當我試圖學習存儲和編譯器不會讓我使用deriving(Show)
時,我通常必須使用Show和其他類來做到這一點。
嗚嗚......爲什麼這個工程與NEWTYPE但不能與數據? – 2009-11-29 22:29:39
因爲newtype不能添加任何構造函數或字段 - 它只是重新包裝現有的類型。這可以確保擴展可以與任何類一起使用,而不僅僅是通常可以爲任何數據類型派生的類。 – Martijn 2009-11-30 09:02:05