我必須撰寫onlyVowels :: [[Char]] -> [[Char]]只回傳元音的函式。
例如: onlyVowels ["Return", "Only", "Vowels", "Please"] == ["eu", "Oy", "oe", "eae"]
到目前為止,我想出了這個:
onlyVowels x = filter (isAVowel x) x where
isAVowel x = elem x "aeiouyAEIOUY"
問題在于我必須檢查單詞串列,而不僅僅是字符。這個練習也禁止使用遞回。
uj5u.com熱心網友回復:
onlyVowels :: [[Char]] -> [[Char]]
onlyVowels = map (filter isAVowel) where
isAVowel x = x `elem` "aeiouyAEIOUY"
使用map你的過濾功能,適用于字串串列中的每個字串。另請注意,這是 eta 減少。這與寫作相同:
onlyVowels xs = map (filter isAVowel) xs where...
使用toLowerfromData.Char也可能是一個好主意。然后你可以只過濾“aeiouy”,如下所示:
import Data.Char (toLower)
onlyVowels :: [[Char]] -> [[Char]]
onlyVowels = map (filter isAVowel) where
isAVowel x = toLower x `elem` "aeiouy"
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/359156.html
下一篇:Haskell中的回傳型別多型性
