Python FFI中的Haskell函数
我尝试在使用FFI的Python程序中使用haskell函数 我的函数类似于f::String->String 有人能帮我吗 我还有另一个函数f2::[(双,双,双)]->((双,双,双),(双,双,双)) 编辑: 我在这里找到了一些信息: 我知道如何在Python中调用fib::Int->Int这样的函数 前Python FFI中的Haskell函数,python,haskell,ffi,Python,Haskell,Ffi,我尝试在使用FFI的Python程序中使用haskell函数 我的函数类似于f::String->String 有人能帮我吗 我还有另一个函数f2::[(双,双,双)]->((双,双,双),(双,双,双)) 编辑: 我在这里找到了一些信息: 我知道如何在Python中调用fib::Int->Int这样的函数 前 但是我不知道如何使function::String->String在Python中可调用,就像您需要将Int上的fib函数包装为CInt上的函数一样,同样,您需要将函数包装在String
但是我不知道如何使function::String->String在Python中可调用,就像您需要将
Int
上的fib函数包装为CInt
上的函数一样,同样,您需要将函数包装在String
上,作为CString
上的函数:以下是从Python
调用Haskell
的一些选项
有一个开源项目,它提供了一个漂亮且易于使用的绑定。这里支持Char和String Haskell类型
还有ctypes.cdll.LoadLibrary
方法和一个示例。您需要将sclv的答案与CString
结合起来
有关如何使用何种外国金融机构的示例,请参见此答案?如何操作?第一步是将列表更改为连续的数据类型,如
Vector Double
,并传递指针和长度。@gspr:我认为OP使用的库的抽象级别稍高一些,因此列表可能更容易处理。其中一些函数可能会有帮助:可能是
module Example where
import Foreign.C.Types
fibonacci :: Int -> Int
fibonacci n = fibs !! n
where fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
fibonacci_hs :: CInt -> CInt
fibonacci_hs = fromIntegral . fibonacci . fromIntegral
foreign export ccall fibonacci_hs :: CInt -> CInt