2015-05-04 24 views
14

Tôi đang viết một bản vá mã nguồn mở để sử dụng thư viện phông chữ, hoặc đúng hơn là gắn kết haskell với thư viện phông chữ trong C (FTGL). Tôi đang trỏ đến kiểu Font tại một trong những cấu trúc dữ liệu, được định nghĩa như sau:Ví dụ dữ liệu Haskell cho kiểu dữ liệu mờ

type Font = Ptr Font_Opaque 
data Font_Opaque 

Thật không may, để phù hợp với cấu trúc dữ liệu của thư viện Tôi đang vá, loại này cần phải được một phiên bản của Data. Ptr đã có, nhưng Font_Opaque rõ ràng là không, do đó, trình biên dịch phàn nàn.

Vì đó là loại mờ nên tôi không biết cách tiến hành ... cách triển khai Phông chữ dữ liệu_Opaque theo cách ít hợp lý hơn? Có cách nào hợp lý không?

+2

Bạn có thể thử 'deriving instance Data Font_Opaque' (bật phần mở rộng' StandaloneDeriving' trước) và sau đó (nếu GHC có thể lấy được) hãy xem ví dụ bằng '-ddump-deriv'. –

Trả lời

3

Như nhận xét của András Kovács cho thấy, sử dụng phần mở rộng ngôn ngữ StandaloneDeriving

{-# LANGUAGE StandaloneDeriving -#} 

và sau đó:

deriving instance Data Font_Opaque 

đã làm các trick, ít nhất là nơi trình biên dịch là có liên quan. Tôi sẽ báo cáo lại nếu điều này ảnh hưởng đến chương trình theo bất kỳ cách nào. Cảm ơn!

Các vấn đề liên quan