ade*_*aek 3 io recursion haskell list
在Haskell中我一直在尝试许多不同的方法来做这件事,我不能为我的生活弄清楚这一点.
我想从用户那里得到一个名单,如果我知道列表的长度(让我们假设是n),我想提示用户n次并在第i次询问第i项.
到目前为止,我有这个:
getinput a b
| a == b = []
| otherwise = input:getinput (a+1) b
where input = do
a <- getLine
return a
Run Code Online (Sandbox Code Playgroud)
但我一直都有错误.
非常感谢任何帮助!
你的代码有问题
input是IO String因为您无法将其附加到列表中.getinput (a+1) b是IO [String],而不仅仅是[String].我在这里更正了你的代码
getinput a b | a == b = return []
| otherwise = do
i <- getLine
rest <- getinput (a+1) b
return (i:rest)
Run Code Online (Sandbox Code Playgroud)
一个更好,更美观的方式
getinput2 n = sequence $ replicate n getLine
Run Code Online (Sandbox Code Playgroud)