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

Haskell:通过在C函数中创建代数数据类型进行封送,haskell,ffi,Haskell,Ffi,是否可以用C语言进行所有数据编组,直接生成代数数据类型并将它们推回Haskell land?我希望通过制作一个中间的C API/struct布局,然后必须通过可存储接口在Haskell中再次封送,从而避免重复工作(和数据复制) 我正在处理一个来自功能性DSL的第三方数据封送系统,它通过调用一组C函数指针回调来将其内部结构映射到用户定义的类型,从而生成一个抽象语法树 这是可能的,但更痛苦。Haskell有更好的编组设施,因此几乎所有时候在Haskell方面都更容易进行编组 如果要从C调用Haske

是否可以用C语言进行所有数据编组,直接生成代数数据类型并将它们推回Haskell land?我希望通过制作一个中间的C API/struct布局,然后必须通过可存储接口在Haskell中再次封送,从而避免重复工作(和数据复制)


我正在处理一个来自功能性DSL的第三方数据封送系统,它通过调用一组C函数指针回调来将其内部结构映射到用户定义的类型,从而生成一个抽象语法树

这是可能的,但更痛苦。Haskell有更好的编组设施,因此几乎所有时候在Haskell方面都更容易进行编组


如果要从C调用Haskell数据构造函数,则需要使用要调用的函数的FFI
foreign export
。此处介绍:

所有非原语返回值都需要包装在StablePtr中,对吗?它们有多轻?这给人的印象是,它们只是生成到某个地方的PTR全局数组中的索引。