С использованием:
{-# 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 может просто вывести его для меня?
StandaloneDeriving
, поэтому я не уверен, о чем вы спрашиваете. - person crockeea   schedule 07.01.2015deriving
не работает для типов данных, отличных от Haskell98. Используяb
вMapE
, я покинул эту территорию. - person fho   schedule 07.01.2015