我可以刪除元音沒有像這樣的遞歸函數:刪除與遞歸函數的字符串的所有元音
NoVowels:: String -> String
NoVowels xs = filter f xs where f x = not (x == ’a’ || x == ’e’ || x == ’i’ || x == ’o’ || x == ’u’)
但我可以怎麼做一個遞歸函數?
我想是這樣的,但當然沒有工作(解析錯誤):
NoVowels :: String -> String
NoVowels "" = error "Empty String!!"
NoVowels (x:xs)
| x in (x == 'a'|| x == 'e' || x == 'i' || x == 'o' || x == 'u') = NoVowels (tail x)
如果head
是元音然後我把它剪從字符串,如果通過遞歸tail
,它不是一個元音如何驗證另一個字符串而不刪除它。
更新obs:我想返回沒有元音的功能。
'x'是列表的頭部。您無法找到列表尾部的頭部。您將使用'xs'而不是'tail x' – PyRulez
沒有理由爲空字符串創建錯誤。事實上,它會打破你的遞歸。 – PyRulez
你不應該在guard語法中使用'in'。 – PyRulez