gpt4 book ai didi

list - 如何在列表中连接用户输入

转载 作者:行者123 更新时间:2023-12-05 01:36:19 25 4
gpt4 key购买 nike

我想从用户那里获取代码并将其插入列表中,但问题是当用户说不想插入更多代码时。我没有保存包含数字的列表,因为我正在使用递归再次调用该方法,所以当我应该返回列表时我没有。

insertCode :: [Integer]
insertCode = do
putStrLn "Code:"
code <- getLine
putStrLn "Another? (Y/N)"
if(resp == "Y" || resp == "y") then (read code::String->Integer):insertCode else --I don't know

很抱歉我提出了愚蠢的问题,我想这很明显,但我对函数式编程有疑问

最佳答案

首先,你的类型签名是错误的。 insertCode 使用 IO monad,所以类型必须是 IO [Integer]。您还缺少将 codeString 转换为 Integer (我使用 readLn 来完成;您试图将 code 转换为 function,而不是 Integer) 而您缺少 getLine 来获取来自用户的 Y/N 响应。

一旦修复,您可以编写如下内容:

insertCode :: IO [Integer]
insertCode = do
putStrLn "Code:"
code <- readLn
putStrLn "Another? (Y/N)"
response <- getLine
result <- if (response == "Y" || response == "y")
then insertCode
else return []
return (code : result)

这有点冗长,但试图明确说明如何使用 monad。无论用户输入 Y 还是 N,code 都必须附加到从 monad 中提取的列表:从 insertCode 的递归使用中提取的列表,或者显式空列表.

关于list - 如何在列表中连接用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43071045/

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