Реализация функциональных коллекций, как в java-stream, scala-collections. Например: collection.map(modifier).filter(...).reduce(...)
.
Чтобы было lazy и оптимально: два последовательных фильтра схлапываются в один.
Проходные: map
, filter
, flatMap
, zip
, take
. Терминальные: reduce
, fold
, forEach
.
from func_collections import Seq
s = Seq(1,2,3,4) \\
.filter(lambda x: x % 2 == 0) \\
.map(lambda x: x ** 2) \\
.reduce(lambda acc, cur: acc+cur)
assert(s == 2**2 + 4**2)
Функция трансофрмации, применяемая над каждым элементом последовательнсти.
Функция фильтрации, то есть отсеивает элементы, если они не удовлетворяют условию предиката.
Функция свёртки последовательности в некоторое одно значение.
Функция обхода всего списка.