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")
이것은 더 간결하지만 구문은 특별히 좋지 않습니다. 다시 말하지만, 이미 존재하는 내장 된 것을 찾아도 놀라지 않을 것입니다.
이 작업을 수행하는 데 선호되는 방법은 무엇입니까?