Извличане на Typeable и данни за GADT?

Използвайки:

{-# 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 трябва да може да го направи и afaik поне за Typeable е задължително.

Вероятно бих могъл да напиша свой собствен екземпляр Data ... но защо да го правя, ако GHC може просто да го извлече вместо мен?


person fho    schedule 30.11.2014    source източник
comment
Какъв е въпросът тук? Изглежда знаете как да използвате StandaloneDeriving, така че не съм сигурен какво питате.   -  person crockeea    schedule 07.01.2015
comment
deriving не работи за типове данни, различни от Haskell98. Използвайки b в MapE напуснах тази територия.   -  person fho    schedule 07.01.2015
comment
stackoverflow.com/questions/12573669/   -  person crockeea    schedule 07.01.2015
comment
stackoverflow.com/questions/15531420/   -  person crockeea    schedule 07.01.2015
comment
Да ... намерих ги преди, но както един дори заявява: Намерих доста нечист начин да заобиколя проблема :(   -  person fho    schedule 07.01.2015