在Haskell中如何仅用Prelude无递归将连续重复元素分组为子列表
Haskell 连续相同元素分组实现(仅使用Prelude库,无自定义递归)
实现代码
groupConsecutive :: Eq a => [a] -> [[a]] groupConsecutive = foldr step [] where step x acc | not (null acc) && x == head (head acc) = (x : head acc) : tail acc | otherwise = [x] : acc
方案说明
- 实现依赖的所有函数
foldr、null、head、tail均属于Prelude标准库,没有引入额外依赖。 - 没有自定义递归逻辑,所有遍历逻辑由Prelude提供的高阶折叠函数
foldr实现,符合使用限制。 - 效果验证:传入输入样例
groupConsecutive [0,0,0,1,1,1,2,2,2],返回结果为[[0,0,0],[1,1,1],[2,2,2]],完全符合预期。
内容的提问来源于stack exchange,提问作者Areej
相关产品推荐
相关产品推荐

