Haskell数据实例适用于不透明数据类型

16

我正在编写一个开源补丁,用于使用字体库,或者更精确地说是在 C 语言中使用字体库的 Haskell 绑定(FTGL)。 我正在指向其中一个数据结构中的 Font 类型,该类型定义如下:

type Font = Ptr Font_Opaque
data Font_Opaque

很不幸,为了适应我正在修补的库的数据结构,这种类型需要成为Data的实例。Ptr已经是了,但Font_Opaque显然不是,所以编译器会报错。

由于它是不透明类型,我不确定如何继续下去...如何以更合理的方式实现Data Font_Opaque?有什么明智的方法吗?


2
你可以尝试使用 deriving instance Data Font_Opaque(首先启用 StandaloneDeriving 扩展),然后(如果 GHC 可以派生出)使用 -ddump-deriv 查看该实例。 - András Kovács
1个回答

5

正如András Kovács的评论所建议的,使用StandaloneDeriving语言扩展

{-# LANGUAGE StandaloneDeriving -#}

接着:

deriving instance Data Font_Opaque

这个方法至少在编译器方面解决了问题。如果这会影响程序的运行,我会及时回报。谢谢!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接