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

しかし、関数を作成する方法がわかりません:: String -> String Pythonで呼び出し可能

4

2 に答える 2

1

Haskellここから呼び出すためのいくつかのオプションがありますPython

便利で使いやすいバインディングを提供するオープン ソース プロジェクトHaPyがあります。ここでは、Char および String の Haskell 型がサポートされています。

ここctypes.cdll.LoadLibraryに例のある方法もあります。sclv の回答を に組み込む必要があります。CString

CStringの使用方法の例については、この回答を参照してください

于 2014-08-17T16:21:46.573 に答える
1

fib 関数Intを の関数にCIntラップする必要があるのと同様に、関数Stringを の関数としてラップする必要がありますCString: http://www.haskell.org/ghc/docs/latest/html/libraries/base/ Foreign-C-String.html

于 2013-03-01T14:59:41.727 に答える