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

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

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

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

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

点赞