Я пытаюсь назвать то, что, по моему мнению, является новой идеей для функции более высокого порядка. К важной части, вот код в 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]