一次处理列表1..n个元素,而无需显式递归
||
我发现自己经常使用一种模式,在该模式下,我使用一个使用列表中的1..n元素并从中产生一些结果的函数来转换列表。例如。
process :: [a] -> [b]
process [] = []
process xs = first : rest
where (first, xs\') = consume xs
rest = process xs\'
其中“ 1”函数使用列表中可变数量的项目,并返回结果和其余列表项目。我可以在这里使用一些标准的高阶函数来代替显式递归吗?
没有找到相关结果
已邀请:
2 个回复
淘圃跺枯替
。如果您将ѭ1转换为以下格式:
如果列表为空,则
返回
,否则返回
。这是一个小包装,捕获了该模式:
然后可以将
与
一起使用,原始定义为
,如下所示:
碧肮械淌设
与
周围的一些包装一起使用,但我希望在那里有一个更高阶的函数可以精确地显示您拥有的图案。我建议在ѭ15上加一个。我也经常使用它。