Haskell,替换列表中给定单词的每个匹配项

时间:2017-08-07 02:00:15

标签: string list haskell replace

我被困在如何更改列表中的给定单词

change :: Eq t => t -> t -> [t] -> [t]
change x y z

该功能应该像提供单词x一样,并将其替换为y列表中的z

change 'a' 'c' "banana"类似,结果为"bcncnc"

如何递归检查列表并更改单词的每次出现?

我自己的尝试:

change st nd [] = []
change st nd (x:xs) = if st == x then nd : xs else x : xs

1 个答案:

答案 0 :(得分:2)

使用当前代码,您只更改此列表的第一个元素(如果它与st匹配),并且不更改列表xs的其余部分。您应该将change函数应用于列表的尾部。