什么是getLine,readLn和print以及putStrLn

时间:2017-08-04 06:24:23

标签: haskell

我正在尝试读取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

它没有。我想知道为什么。

1 个答案:

答案 0 :(得分:4)

getLinegetLine :: IO String类型

这就是为什么在这一行中x <- getLinex获得String值,但(+) :: Num a => a -> a -> a仅为Num个实例定义。

readLn :: Read a => IO a获取行和read值,即解析字符串并返回特定类型的值。

因此,readLnread <$> getLine相同。