[英]How can I fix my replace haskell function?
它會在以下情況下工作:replace :: Eq a => a -> a -> [a] -> [a] 將是。 如何在我的代碼中將 az a 轉換為 [a] ?
replace :: Eq a => a -> [a] -> [a] -> [a]
replace _ _ [] = []
replace a x (y:ys)
| a == y = x : replace a x ys
| otherwise = y : replace a x ys
Example:
replace '?' "a" "" == ""
replace 'a' "e" "alma" == "elme"
replace 'a' "e" "nincsbenne" == "nincsbenne"
您為第一個守衛( a == y
)使用了錯誤的運算符 - :
用於將頭元素添加到列表中,但x
是列表而不是單個元素,因此您需要使用++
連接兩個列表( x
一個由遞歸調用返回):
replace :: Eq a => a -> [a] -> [a] -> [a]
replace _ _ [] = []
replace a x (y:ys)
| a == y = x ++ replace a x ys -- ++ instead of :
| otherwise = y : replace a x ys
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.