【发布时间】:2011-05-28 08:14:08
【问题描述】:
我发现自己经常使用一种模式,在该模式中,我使用一个函数转换一个列表,该函数消耗列表中的 1..n 个元素并从中产生一些结果。例如
process :: [a] -> [b]
process [] = []
process xs = first : rest
where (first, xs') = consume xs
rest = process xs'
consume 函数使用列表中可变数量的项目并返回结果和剩余的列表项目。我可以在这里使用一些标准的高阶函数而不是显式递归吗?
【问题讨论】:
-
那将是一个不错的组合器。我通过hoogle找不到它。我的搜索词是
([a] -> (b,[a])) -> [a] -> [b]。