2015-05-04 25 views
14

Piszę łatę open source, aby korzystać z biblioteki czcionek lub raczej z powiązań haskell z biblioteką czcionek w C (FTGL). mam wskazujące na rodzaj czcionki w jednej ze struktur danych, które można określić następująco:Instancja Haskell Data dla nieprzezroczystego typu danych

type Font = Ptr Font_Opaque 
data Font_Opaque 

Niestety, aby pasowały do ​​struktury danych biblioteki Mam łatanie tego typu musi być instancja o numerze Data. Ptr już istnieje, ale Font_Opaque oczywiście nie jest, więc kompilator narzeka.

Ponieważ jest to typ nieprzezroczysty, nie jestem pewien, jak postępować ... jak zaimplementować Data Font_Opaque w bardziej lub mniej sensowny sposób? Czy istnieje rozsądny sposób?

+2

Możesz wypróbować 'wyprowadzenie instancji Data Font_Opaque' (najpierw włączyć rozszerzenie' StandaloneDeriving'), a następnie (jeśli GHC może wyprowadzić) spojrzeć na instancję za pomocą '-ddump-deriv'. –

Odpowiedz

3

W komentarzu András Kovács przez sugeruje, używając rozszerzenia języka StandaloneDeriving

{-# LANGUAGE StandaloneDeriving -#} 

, a następnie:

deriving instance Data Font_Opaque 

wystarczyły, przynajmniej wtedy, gdy kompilator jest zaniepokojony. Odpowiem, jeśli wpłynie to na program w jakikolwiek sposób. Dzięki!

Powiązane problemy