相关疑难解决方法(0)

IO monad的逻辑和严格性

我想在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)

评价完美; 这意味着不计算第二个参数.如何在我的应用程序中使用系统命令执行相同的操作?

haskell logical-operators strictness

5
推荐指数
1
解决办法
189
查看次数

标签 统计

haskell ×1

logical-operators ×1

strictness ×1