Haskell:通过在C函数中创建代数数据类型进行编组

时间:2014-12-25 08:42:41

标签: haskell ffi

是否有可能在C中进行所有数据编组,直接生成代数数据类型并将它们推回Haskell域?我想通过制作一个中间的C API / struct布局来避免做两次工作(和数据复制),然后通过Storable接口再次在Haskell中编组。

我正在处理来自功能DSL的第三方数据编组系统,该系统通过调用一组C函数指针回调来重现抽象语法树,以将其内部结构映射到用户定义的类型。

1 个答案:

答案 0 :(得分:2)

这是可能的,但更痛苦。 Haskell有更好的编组工具,所以几乎所有的时候在Haskell方面都更容易做。

如果要从C调用Haskell数据构造函数,则需要使用要调用的函数的FFI foreign export。这里介绍:https://www.haskell.org/haskellwiki/Calling_Haskell_from_C