替换列表列表中的第n项

时间:2018-04-01 23:00:18

标签: haskell

我处理简单的函数,用列表列表替换列表列表中的第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

你能帮我修一下这个功能吗?

1 个答案:

答案 0 :(得分:2)

您的代码几乎是正确的,您需要将newVal与列表的其余部分连接起来,以便进行类型检查。您也可以使用模式匹配而不是防护。

replaceNth 0 newVal (x:xs) = newVal ++ xs 
replaceNth n newVal (x:xs) = x : replaceNth (n-1) newVal xs

要完成此功能,您需要为空列表提供案例(如果适用)