[英]Haskell: typeclass deriving from other typeclass
假設我有一個保存在數據庫中的實體的類型類。 一些簡化的示例可能看起來像這樣:
class Persistent a where
fetch :: Int -> IO (Maybe a)
store :: a -> IO Bool
現在,我發現對於store
我可能需要了解實體的類型,因此它也應該是Typeable
。
是否有某種方法可以說明所有Persistent
實體都是可Typeable
而無需在每個特定的data
子句中添加deriving (Typeable)
? 例如:
class Persistent a deriving (Typeable) where
fetch :: Int -> IO (Maybe a)
store :: a -> IO Bool
不,這是不可能的。
在class Persistent a
,a不必表示數據類型聲明。 這只是一種。 例如,可以為Maybe Integer
添加一個Persistent
實例。
instance Persistent (Maybe Integer) where ...
因此,它並沒有太大的意義談“添加deriving (Typeable)
條款向所有a
碰巧為S Persistent
”。 不能說data Maybe Integer deriving Typeable
或類似的東西。
如果您完全確定每個Persistent
事物都必須是Typeable
,則可以向Persistent
類添加約束 :
class Typeable a => Persistent a where ...
但是,這對Typeable
自動派生沒有任何幫助。 它僅要求每個Persistent
實例都應該有一個Typeable
實例,您仍然必須以一種或另一種方式來產生自己(例如,通過將deriving (Typeable)
添加到所有相關的數據類型)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.