Получение типизированных данных и данных для 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 должен уметь это делать, и, по крайней мере, для 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