我想在Haskell中编写一个简单的程序.它应该基本上并行运行两个shell命令.这是代码:
import System.Cmd
import System.Exit
import Control.Monad
exitCodeToBool ExitSuccess = True
exitCodeToBool (ExitFailure _) = False
run :: String -> IO Bool
run = (fmap exitCodeToBool) . system
main = liftM2 (&&) (run "foo") (run "bar")
Run Code Online (Sandbox Code Playgroud)
但命令"foo"返回ExitFailure,我希望"bar"永远不会运行.不是这种情况!它们都运行并且都在控制台上显示错误.
同时
False && (all (/= 0) [1..])
Run Code Online (Sandbox Code Playgroud)
评价完美; 这意味着不计算第二个参数.如何在我的应用程序中使用系统命令执行相同的操作?