繁体   English   中英

Haskell中的groupBy函数

[英]groupBy function in Haskell

我知道Data.List模块带有预定义的功能groupBy,我想用它来将字符串分成连续的元音和非元音组。 函数groupBy的格式如下:

groupBy :: (a -> a -> Bool) -> [a] -> [[a]]

如何使用这种格式对字符串进行拆分? 谢谢

像这样

ghci> import Data.Char
ghci> import Data.List
ghci> groupBy (const isAlphaNum) "A bunch of words and numbers34"
["A"," bunch"," of"," words"," and"," numbers34"]

要么

ghci> groupBy (const isAlpha) "A bunch of words and numbers34"
["A"," bunch"," of"," words"," and"," numbers","3","4"]

编辑:由于没有迹象表明已找到扩展问题的解决方案,为了保持SO的标准,我将完成问题的答案:

import Data.List

isVowel :: Char -> Bool
isVowel c = c `elem` "aeiouy"

bothVowelConsonant :: Char -> Char -> Bool
bothVowelConsonant a b = all isVowel [a,b] || not (any isVowel [a,b])

splitByVowel :: String -> [String]
splitByVowel s = groupBy bothVowelConsonant s

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM