我正在研究简单的函数,用列表列表替换列表列表中的第 n 项。
输入:replaceNth 2 [["0","1"],["8","8"]] [["2","3"],["1","2"],["3","4"],["9","12"]]
预期输出:[["2","3"],["1","2"],["0","1"],["8","8"], [“9”,“12”]]
目前我得到的以下代码无法正常工作。
replaceNth n newVal (x:xs)
| n == 0 = newVal:[xs]
| otherwise = [x]++replaceNth (n-1) newVal xs
你能帮我修复这个功能吗?
最佳答案
您的代码几乎是正确的,您需要将 newVal
与列表的其余部分连接起来,以便进行类型检查。您还可以使用模式匹配来代替防护。
replaceNth 0 newVal (x:xs) = newVal ++ xs
replaceNth n newVal (x:xs) = x : replaceNth (n-1) newVal xs
要完成此功能,您需要提供空列表的情况(如果适用)
关于haskell - 替换列表列表中的第 n 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49603403/