高階関数の新しいアイデアだと思うものに名前を付けようとしています。重要な部分として、ここに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 ----
プリーツが勝ちます!
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]