它會在以下情況下作業: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"
uj5u.com熱心網友回復:
您對第一個守衛 ( a == y
) 使用了錯誤的運算子 -:
用于將頭元素添加到串列中,但x
它不是單個元素,因此您需要使用
which 連接兩個串列(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
相關 - Haskell (:) 和 ( ) 差異
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/495983.html
下一篇:無法匹配型別變數