Python FFI中的Haskell函数
我想在我的Python程序中使用Haskell函数,方法是通过FFI(外部函数接口)。
我的函数看起来像这样:f :: String -> String
有没有人能帮我一下?
我还有另一个函数:f2 :: [(Double,Double,Double)] -> ((Double,Double,Double),(Double,Double,Double))
编辑:
我在这里找到了一些信息:https://github.com/nh2/call-haskell-from-anything
我知道怎么在Python中调用像fib :: Int -> Int这样的函数。
比如:
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
但是我不知道怎么让函数funciton :: String -> String在Python中可调用。
2 个回答
1
就像你需要把你的 fib 函数从 Int
类型包装成 CInt
类型一样,你也需要把你的字符串函数从 String
类型包装成 CString
类型。你可以在这里找到更多信息:http://www.haskell.org/ghc/docs/latest/html/libraries/base/Foreign-C-String.html