Python FFI中的Haskell函数

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

我尝试在使用FFI的Python程序中使用haskell函数

我的函数类似于f::String->String

有人能帮我吗

我还有另一个函数f2::[(双,双,双)]->((双,双,双),(双,双,双))

编辑:

我在这里找到了一些信息:

我知道如何在Python中调用fib::Int->Int这样的函数


但是我不知道如何使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