我在网站上有这段代码:
doGuessing num = do
putStrLn "Enter your guess:"
guess <- getLine
case (read guess) `compare` num of
LT -> do putStrLn "Too low!"
doGuessing num
GT -> do putStrLn "Too high!"
doGuessing num
EQ -> putStrLn "You Win!"
我想知道,如果没有分配任何内容,num
如何进行比较?
答案 0 :(得分:4)
doGuessing
是一个名为num
的单个参数的函数。这相当于:
function doGuessing(num) {
...
}
用命令式语言。
因此,当您实际使用您定义的num
函数时,doGuessing
将绑定到一个值。
要使用该功能,您可以使用参数将其放在main
中:
main = doGuessing 10
一般来说,在Haskell f 1 2 3
与c-like语言中的f(1,2,3)
相同。
答案 1 :(得分:3)
doGuessing :: (Ord a, Read a) => a -> IO ()
通常,值在Haskell中绑定,未分配。该函数使用do语法进行monadic处理,使其类似于命令式样式。不过,在你传递一个论证之前,它仍然是一个功能,而不是一个动作。
调用它的一个例子可能是:
main :: IO ()
main = doGuessing 4