我正在尝试命名我认为是高阶函数的新想法。重要的是,这里用Python和Haskell的代码来演示这个概念,后面会解释。
python :
>>> def pleat(f, l):
return map(lambda t: f(*t), zip(l, l[1:]))
>>> pleat(operator.add, [0, 1, 2, 3])
[1, 3, 5]
haskell :
Prelude> let pleatWith f xs = zipWith f xs (drop 1 xs)
Prelude> pleatWith (+) [0,1,2,3]
[1,3,5]
正如您可能推断的那样,序列正在迭代,使用相邻元素作为您传递给它的函数的参数,将结果投影到新序列中。那么,有没有人看到我们创建的功能?这对职能社区的人来说是否很熟悉?如果不是,我们给它起什么名字?
---- Update ----
Pleat 获胜!
Prelude> let pleat xs = zip xs (drop 1 xs)
Prelude> pleat [1..4]
[(1,2),(2,3),(3,4)]
Prelude> let pleatWith f xs = zipWith f xs (drop 1 xs)
Prelude> pleatWith (+) [1..4]
[3,5,7]
最佳答案
嗯……对位。
(`ap` tail) . zipWith
没有名字。
顺便说一句, Mercurial 说:
zip`ap`tail
阿兹特克连续数字之神
关于python - 我们怎么称呼这个(新的?)高阶函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3774247/