Haskell IO方法什么都不做

时间:2014-11-16 20:28:03

标签: haskell io

这是我的代码:

foo :: Int -> IO()
foo a 
   | a > 100 = putStr ""
   | otherwise = putStrLn "YES!!!"

该功能应输出" YES !!!"如果它小于100并且如果它大于100则不输出任何内容。虽然上面有效,但除了打印空字符串之外,还有更正式的方法来返回任何内容。 e.g。

foo :: Int -> IO()
foo a 
   | a > 100 = Nothing
   | otherwise = putStrLn "YES!!!"

2 个答案:

答案 0 :(得分:10)

foo :: Int -> IO ()
foo a 
   | a > 100 = return ()
   | otherwise = putStrLn "YES!!!"

答案 1 :(得分:6)

如果您导入Control.Monad,则您可以访问whenunless个函数,这些函数具有类型

when, unless :: Monad m => Bool -> m () -> m ()

在这种情况下可以用作

foo a = when (not $ a > 100) $ putStrLn "YES!!!"

或更优选的表格

foo a = unless (a > 100) $ putStrLn "YES!!!"

unless函数只是根据when定义为:

unless b m = when (not b) m