使用:
{-# LANGUAGE GADTs #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE DeriveDataTypeable #-}
并给出以下数据类型:
data Event a where
PureE :: a -> Event a
MapE :: (a -> b) -> Event a -> Event b
deriving instance Typeable Event
deriving instance Data a => Data (Event a)
我的目标是使用需要uniplate
实例的Data
包。
GHC是否能够自动导出Typeable
和Data
?由于7.8 GHC应该能够这样做并且至少在Typeable
处是afaik,这是强制性的。
我可能会编写自己的Data
实例......但为什么GHC可以为我推导呢?