Производный тип для Text.PrettyPrint.Doc

У меня есть тип AST, который я хочу вывести как Typeable, так что я могу сделать его общий обход Scrap-your-шаблонный.

Тем не менее, дерево снабжено сообщениями в Doc тип библиотеки Text.PrettyPrint из симпатичного пакета. Чтобы получить Typeable, должен быть типизируемый экземпляр Doc,

Вот что я попробовал и потерпел неудачу:

deriving instance Data P.Doc
deriving instance Typeable P.Doc

выдает эту ошибку:

Can't make a derived instance of `Data P.Doc':
  The data constructors of `P.Doc' are not all in scope
    so you cannot derive an instance for it
In the stand-alone deriving instance for `Data P.Doc'

Или я пытаюсь получить свой собственный экземпляр:

instance Typeable P.Doc where 
    typeRep v = typeRep $ show v   

который дает эту ошибку:

 `typeRep' is not a (visible) method of class `Typeable'      

Я делаю что-то неправильно? Есть ли стандартный способ получения typeable для типов, указанных в других библиотеках?

Дело в том, что случай не супер важен. Я знаю, что никакие части моего AST не хранятся рекурсивно в пределах значения Doc. Но GHC жалуется, если у меня нет этого экземпляра.

0 ответов

Другие вопросы по тегам