这是我的代码:
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!!!"
答案 0 :(得分:10)
foo :: Int -> IO ()
foo a
| a > 100 = return ()
| otherwise = putStrLn "YES!!!"
答案 1 :(得分:6)
如果您导入Control.Monad
,则您可以访问when
和unless
个函数,这些函数具有类型
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