我正在尝试在 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")
但是命令“foo”返回 ExitFailure,我希望“bar”永远不会运行。不是这种情况!它们都运行并且都在控制台上显示错误。
同时
False && (all (/= 0) [1..])
评价很好;这意味着不计算第二个参数。如何在我的应用程序中对系统命令执行相同操作?