import System.IO
import Data.Char
edastaNr n
= do
putStrLn "Anna rida:"
line <- getLine
if null line
then return ()
else do return length(line)
任何人都可以解释为什么最后一行不正确以及如何修复它?我没有意识到..错误是:
Couldn't match expected type `IO ()' with actual type `[a0] -> Int'
答案 0 :(得分:4)
你错过了括号。
...
else do return (length line)
但是,也存在类型错误。您的edasaNr
功能的类型是什么?
它必须做一些IO并在给出参数时返回Int
。
所以最好写成:
edastaNr :: a -> IO Int
edastaNr n = do
putStrLn "Anna rida:"
line <- getLine
if null line
then return 0
else return $ length line
还表明你没有使用n
参数(所以它可以有任何类型)。