【发布时间】:2014-10-08 16:30:09
【问题描述】:
对于将函数映射到列表中每个第 n 个元素的函数:
mapEvery :: Int -> (a -> a) -> [a] -> [a]
mapEvery n f = zipWith ($) (drop 1 . cycle . take n $ f : repeat id)
是否可以像普通的map 一样使用foldr 来实现这一点?
编辑:在标题中,将“文件夹”更改为“文件夹”。自动更正...
【问题讨论】:
-
我没想到会这样,至少在一个文件夹中不会。
-
嗯?这真的很有趣。您将如何使用多个
foldr来实现它? -
...没关系,也不要认为那行得通。使用
foldr,您只能计算列表末尾中有多少元素,而不是从开头开始有多少。 -
是的,我意识到了。我在想,如果基本情况包括
mod (length xs) n,那可能会起作用,但这只适用于有限列表。 -
@LouisWasserman 你可以用
foldr来实现foldl,所以你使用哪个折叠并不重要。
标签: haskell functional-programming fold