如何从 Golang 调用 Haskell 函数?

Tgs*_*591 7 haskell ffi go

我是一名正在转向 Golang 的 Python 开发人员,所以我很抱歉这个菜鸟问题。我负责获取一些 Haskell 代码,我们有 python 绑定,并使其可从 Go 调用。我有一个共享对象文件,_foo.so我想以某种方式将其导入 Go 并调用 la:

import (
    f "_foo.so"
)

func DoBar() {
    return f.Bar()
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?我什至不知道从哪里开始,但我希望伪代码能传达这个想法。

Yur*_*ras 5

正如评论中已经提到的,你需要通过 C。

好消息:您拥有的 python 绑定已经通过 C。这意味着 haskell 代码将所有必要的 API 公开为 C 函数,您只需要了解 API 的外观并使用cgo. 您可能不需要了解有关 haskell 的任何信息。

假设您有权访问源代码,您应该查找*.c*.h文件(通常位于cbits文件夹中)。如果你不会C,那就请你的队友帮忙。

如果您无权访问代码,那么您可以尝试使用 python 绑定来猜测 C API。虽然这会非常困难。