2015-05-04 2 views
14

Я пишу патч с открытым исходным кодом, чтобы использовать библиотеку шрифтов, а точнее привязки haskell к библиотеке шрифтов в C (FTGL). Я указывает на тип шрифта в одной из структур данных, которая определяется следующим образом:экземпляр Haskell Data для непрозрачного типа данных

type Font = Ptr Font_Opaque 
data Font_Opaque 

К сожалению, чтобы вписаться в структуру данных библиотеки я Patching, этот тип должен быть экземпляр Data. Ptr уже есть, но Font_Opaque явно нет, поэтому компилятор жалуется.

Как это непрозрачный тип, я не уверен, как действовать ... как реализовать Data Font_Opaque более или менее разумным способом? Есть ли разумный путь?

+2

Вы можете попробовать «получить экземпляр Data Font_Opaque» (сначала включить расширение 'StandaloneDeriving'), а затем (если GHC может получить) посмотреть экземпляр с' -ddump-производным'. –

ответ

3

Как замечанием Андраш Ковач предлагает, используя расширение языка StandaloneDeriving

{-# LANGUAGE StandaloneDeriving -#} 

, а затем:

deriving instance Data Font_Opaque 

сделал трюк, по крайней мере там, где компилятор обеспокоен. Я отчитаю, если это повлияет на программу в любом случае. Благодаря!

Смежные вопросы