2017-08-07 33 views
0

我被困在如何改變在列表中哈斯克爾,替換名單

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

SUBST ST ND [] = [] SUBST ST ND(X:XS)= 如果ST == X 然後ND:XS 否則x:XS –

+0

我真的只是一個初學者和不熟悉的遞歸函數Haskell,我不知道我在哪裏做錯了〜 –

回答

2

隨着當前的代碼,只是更改了此列表的第一個元素(如果它匹配st),並追加列表xs不變的其餘部分。您應該將change函數應用於列表的尾部。

+0

謝謝你的建議,我解決了這個問題,非常感謝你! –