Песочница

Работа с map, filter, fold и apply

Стройте детерминированные pipeline из обхода коллекций слева направо и явно задавайте арность callback и контексты результатов.

Кратко

LISPEX
(reduce + 0 (map (lambda (x) (* x x)) (filter odd? (list 1 2 3 4))))

Результат

OUTPUT
10

Рабочий порядок

  • Используйте map для одного результата на элемент, filter для выбора и folds для одного аккумулятора.
  • Callbacks выполняются как гостевые процедуры, поэтому действуют ошибки, escapes, предупреждения и value contexts.
  • Используйте apply, когда последний правильный список должен стать позиционными аргументами; хвостовое применение сохраняется.

Границы

  • Callback, дающий ноль или несколько значений в позиции одного значения, вызывает E320.