1

嘿,所以我正在尝试学习haskell,但我在编写一个需要我从终端中的用户那里收集整数的程序时遇到了麻烦。我该怎么做我试过这样的事情

import Data.Char (digitToInt)


getArguments :: IO Int
getArguments =
    do putStrLn "Enter the number of arguments you want to have"
       arguments <- getChar
       return (digitToInt arguments)


main :: IO()
main = do
    putStrLn "Welcome to Random Argument Generator"
    let x = getArguments
    print x+1

但这不起作用请帮忙!

4

1 回答 1

6

替换let x = getArgumentsx <- getArguments

getArgumentsis (correctly)的类型签名:: IO Int,这意味着它Int被“包装”在 IO monad 中,这意味着您必须使用val <- func语法来解包它。

如果 getArguments是纯函数 ( :: Int),那么 let 语法应该是正确的。

于 2013-03-09T09:26:51.897 回答