5

我能够通过包含标准数据类型的 FFI 导出简单的 haskell 函数。但是,我不知道如何导出采用标准数据类型以外的数据类型的函数。

例如

data SomeType a = SomeType a
data SomeOtherType b = SomeOtherType b

doSomething:: SomeType a -> SomeOtherType b

如何导出函数 doSomething?

现有文件讨论了非常简单的示例。

4

2 回答 2

2

另一种方法是解除函数以使用StablePtr,并使用StablePtr 导出函数。当然,正如上述答案中所指出的,您已经使用了带有导出实例的函数。

使用 H/Direct 之类的东西将这段代码插入到 c++ 对象中,这样它就可以作为对象进行访问。

于 2012-08-30T15:59:03.583 回答
1

简短的回答是,你不能

您需要选择该函数的一个实例并将其导出。

例如doSomething :: SomeType Int -> SomeOtherType Int是可出口的。我在这里写了一个更长的答案,可能会有所帮助

原因是 Haskell 端需要知道如何编组结构、分配多少内存等。

于 2012-08-30T10:03:57.223 回答