使用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程序,并获取其输出结果。根据你的需求,你可以调用任何其他的外部程序,使用不同的命令行参数,并处理程序的输入和输出以满足你的需求。
