gpt4 book ai didi

haskell - getLine 和 readLn 之间的区别

转载 作者:行者123 更新时间:2023-12-02 13:48:14 27 4
gpt4 key购买 nike

当我运行以下代码时,没有出现运行时错误:

printReverse :: IO ()
printReverse = do
line <- getLine
when (not $ null line) $
do putStrLn $ reverse line
printReverse
return ()

但是,当我运行相同的代码(除了将 getLine 替换为 readLn::IO String 之外)时,我收到解析错误。

代码:

printReverse :: IO ()
printReverse = do
line <- readLn :: IO String
when (not $ null line) $
do putStrLn $ reverse line
printReverse
return ()

错误:

*** Exception: user error (Prelude.readIO: no parse)

getLine 和 readLn 之间有什么区别?

最佳答案

查看类型。

readLn :: Read a => IO a

getLine :: IO String

readLn 根据结果类型的“读取”格式解析输入。这与 show 的格式相同。

因此,您尝试从输入中以 show 格式读取 Haskell 字符串值,这很令人困惑,除非该字符串已经采用双 qyoted Haskell 格式.

关于haskell - getLine 和 readLn 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27635765/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com