我想在Haskell中执行以下操作:
main1 = do s <- getLine
if s == "foo" then putStr "You entered foo"
显然这是不合法的,因为那里没有else
。我想到的另一种选择:
nop :: IO ()
nop = sequence_ []
main2 = do s <- getLine
if s == "foo" then putStr "You entered foo" else nop
这有点冗长,但是如有必要,我会解决的。如果没有的内置版本,我会感到惊讶nop
。
或者:
doIf :: Bool -> IO () -> IO ()
doIf b m = if b then m else nop
main3 = do s <- getLine
doIf (s == "foo") (putStr "You entered foo")
这更加简洁,但是语法不是特别好。再次,我不会惊讶地发现已经存在的内置功能。
首选的方法是什么?