我已经在Haskell中尝试了许多不同的方法来完成此操作,但我一生无法解决这个问题。

我想从用户那里获得一个名称列表,如果我知道列表的长度(假设为n),我想提示用户n次并在第i次询问第i个项目。

到目前为止,我有这个:
ojit_pre

但我不断出错。

非常感谢您的帮助!

最佳答案

您的代码有问题


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)


更好,更仓促的方式

getinput2 n = sequence $ replicate n getLine

08-19 14:19