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

4

是否有可能在C语言中完成所有数据编组工作,直接生成代数数据类型并将其推回到Haskell领域?我想要避免通过创建一个中间的C API/结构体布局来做两次工作(和数据复制),然后还需要通过Storable接口在Haskell中进行编组。

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

1个回答

2
可以,但是更加繁琐。Haskell拥有更好的编组设施,因此几乎所有情况下,在Haskell端进行处理更容易。
如果您想从C中调用Haskell数据构造函数,则需要使用FFI foreign export导出您要调用的函数。这里提供了一个介绍:https://www.haskell.org/haskellwiki/Calling_Haskell_from_C

所有非原始返回值都需要包装在StablePtr中,对吧?它们有多轻量级?这给人的印象是它们只是生成的索引,指向某个全局指针数组。 - Jean-Baptiste

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