Haskell在返回函数时遇到麻烦

时间:2013-03-14 01:49:34

标签: haskell if-statement return

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"

它抱怨我回来的时候和我的号召。我把这个功能作为一个测试,我真的很困惑它究竟抱怨什么。

1 个答案:

答案 0 :(得分:1)

在Haskell中,诸如if表达式之类的表达式是函数的完美定义。您只需删除return一词。

之后,你会在main中出现问题,其中一行不执行I / O,因此其类型与周围的do不兼容(我认为) :

test <- while arguments validity premRange atomRange operators

但是,啊哈,您可以将其更改为:

let test = while arguments validity premRange atomRange operators