【发布时间】:2013-03-02 05:48:11
【问题描述】:
while :: Int -> Bool -> (Int,Int) -> (Int,Int) ->[Int] -> String
while arguments validity premRange atomRange operators =
return(if validity then "Hello" else "NO")
main :: IO()
main =
do
putStrLn "Welcome to Random Argument Generator"
arguments <- getArguments
validity <- getValidity
putStrLn "Enter the range of the number of premises to each argument"
premRange <- getRange
putStrLn "Enter the range of the number of atomic statments per premises"
atomRange <- getRange
operators <- getOperators
putStrLn "Thank You!\nExecuting..."
test <- while arguments validity premRange atomRange operators
putStrLn "Good Bye"
它抱怨我在一段时间内回来并打电话给它。我把这个函数作为一个测试,我真的很困惑它到底在抱怨什么。
【问题讨论】:
-
return在 Haskell 中并不意味着它在其他语言中的含义。对于普通功能,您永远不需要使用return。 -
我使用的 IO 函数返回了这些函数,它们起作用了,但出于其他原因
-
@user2150839,
return在 Haskell 中专门针对IO(和其他单子);即它使用纯值进行IO计算。return :: a -> IO a -
@user2150839:在正常语言中,从函数返回 monad 看起来像
return IO("xxx")。在 Haskell 中,return 语句是隐式的,monad 构造函数称为return,"xxx"保持不变。
标签: haskell if-statement return