欢迎访问宙启技术站
智能推送

使用Python在Haskell中调用外部程序的案例

发布时间:2023-12-09 10:54:37

在Haskell中调用外部程序可以使用System.Process模块。System.Process模块提供了执行外部程序的函数,并且也可以读取和写入程序的输入和输出。

下面是一个简单的例子,展示了如何在Haskell中调用Python程序并获取其输出:

import System.Process (readProcess)

main :: IO ()
main = do
  result <- readProcess "python" ["-c", "print('Hello from Python')"] ""
  putStrLn result

在上述例子中,readProcess函数接受三个参数:外部程序的名称(这里是"python"),命令行参数(这里是["-c", "print('Hello from Python')"])和输入字符串(这里是"",意味着没有输入)。readProcess函数返回程序的输出结果。

你可以将上述代码保存到一个文件中,并使用GHC编译器编译运行。如果你的系统中已经安装了Python,那么你应该会在控制台中看到"Hello from Python"的输出。

下面是另一个例子,展示了如何使用Haskell调用Python程序传递参数和获取结果:

import System.Process (readProcessWithExitCode)

main :: IO ()
main = do
  let input = "Hello"
  (exitCode, result, _) <- readProcessWithExitCode "python" ["print(len('" ++ input ++ "'))"] ""
  case exitCode of
    ExitSuccess   -> putStrLn result
    ExitFailure{} -> putStrLn "Error occurred"

在上述例子中,readProcessWithExitCode函数返回一个三元组,包含了程序的返回码、输出结果和错误信息。你可以使用ExitSuccess检查返回码是否为成功,然后输出结果,或者使用ExitFailure检查返回码是否为失败。

上述代码也保存到一个文件中,并使用GHC编译器编译运行。你会在控制台中看到"5"的输出。

这些例子展示了如何在Haskell中调用Python程序,并获取其输出结果。根据你的需求,你可以调用任何其他的外部程序,使用不同的命令行参数,并处理程序的输入和输出以满足你的需求。