我处理简单的函数,用列表列表替换列表列表中的第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
你能帮我修一下这个功能吗?
答案 0 :(得分:2)
您的代码几乎是正确的,您需要将newVal
与列表的其余部分连接起来,以便进行类型检查。您也可以使用模式匹配而不是防护。
replaceNth 0 newVal (x:xs) = newVal ++ xs
replaceNth n newVal (x:xs) = x : replaceNth (n-1) newVal xs
要完成此功能,您需要为空列表提供案例(如果适用)