2

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

我的功能就像 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

但我不知道如何在 Python 中使 funciton :: String -> String 可调用

4

2 回答 2

1

正如您需要将 fib 函数包装Int到函数 on 上CInt一样,您同样需要将函数包装为 on 上String的函数CStringhttp ://www.haskell.org/ghc/docs/latest/html/libraries/base/ Foreign-C-String.html

于 2013-03-01T14:59:41.727 回答
1

以下是一些用于调用Haskell的选项Python

有一个开源项目HaPy,它提供了一个漂亮且易于使用的绑定。这里支持 Char 和 String Haskell 类型。

这里还有ctypes.cdll.LoadLibrary一个例子的方法。您需要将 sclv 的答案与.CString

有关如何使用CString的示例,请参阅此答案

于 2014-08-17T16:21:46.573 回答