我被困在如何更改列表中的给定单词
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
答案 0 :(得分:2)
使用当前代码,您只更改此列表的第一个元素(如果它与st
匹配),并且不更改列表xs
的其余部分。您应该将change
函数应用于列表的尾部。