我正在尝试读取2个值并添加它们。当我这样做时:
add a b = a + b
main = do
x <- readLn
y <- readLn
let sum = add x y
print sum
它有效。但是当我这样做时:
add a b = a + b
main = do
x <- getLine
y <- getLine
let sum = add x y
print sum
它没有。我想知道为什么。
答案 0 :(得分:4)
getLine
有getLine :: IO String
类型
这就是为什么在这一行中x <- getLine
,x
获得String
值,但(+) :: Num a => a -> a -> a
仅为Num
个实例定义。
readLn :: Read a => IO a
获取行和read
值,即解析字符串并返回特定类型的值。
因此,readLn
与read <$> getLine
相同。