gpt4 book ai didi

haskell - 从用户输入中读取 float 或字符串

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

我希望能够从控制台输入中读取数字,并将它们存储到一个列表中,直到用户键入结束,如下所示:

readN = readNumbers []    

readNumbers nums = do
n <- readFloatOrString
case n of
<<number>> -> return readNumbers (nums ++ [n])
"end" -> return nums

这在不导入库的情况下可行吗?

最佳答案

您不应该读取该值,或者至少不应该立即读取。您可以先检查该行是否为"end" ,如果是,则返回数字,否则继续阅读:

import Text.Read(readMaybe)

readNumbers :: IO [Float]
readNumbers = do
n <- getLine
case (n, readMaybe n :: Maybe Float) of
("end", _) -> pure []
(_, Just n) -> (n:) <$> readNumbers
(_, Nothing) -> …
如果您没有传递有效的浮点数,则应该处理该案例的部分。

因此,我们可以处理一个列表:
Prelude Text.Read> readNumbers 
1
4
end
[1.0,4.0]

(这里粗体部分是用户输入)。

关于haskell - 从用户输入中读取 float 或字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62235331/

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