Haskell “do nothing” IO, or if without else

后端 未结 2 787
挽巷
挽巷 2020-12-08 12:42

I want to do something in Haskell that looks like this:

main1 = do s <- getLine
           if s == \"foo\" then putStr \"You entered foo\"
2条回答
  •  自闭症患者
    2020-12-08 13:13

    The easiest way to do a no-op in a monad is:

    return ()
    

    Equivalently:

    pure ()
    

    However, for the particular idiom you're doing, there's a combinator already made for you:

    import Control.Monad
    main = do s <- getLine
              when (s == "foo") $ putStr "You entered foo"
    

    This when combinator behaves exactly like your doIf combinator :)

提交回复
热议问题