基于复杂的Haskell类型生成C结构

Jak*_*mpl 10 c haskell ffi

我想在我的C代码中使用Haskell库.Haskell的功能我想使用的类型是String -> IO [Reference]在那里Reference是一个相当复杂的结构(见此处查看详情).

基于阅读各种文档,似乎我必须使这个类型成为一个实例,Storable并且在我的c代码中定义了类似的结构才能访问它.对于如此复杂的类型,这似乎是很多非常重复的工作.有没有办法实现自动化?怎么会做这样的事情?

Yur*_*ras 8

这取决于你的实际用例,但是...可以更容易导出Reference为opaque类型(通过Foreign.StablePtr),并导出getter函数来访问各个字段.

如果您需要更多详细信息,请告诉我,我会扩大答案.

  • @JakubHampl你可以尝试`Foreign.Marshal.Array.newArray`或类似的东西. (2认同)