Песочница

Процедуры высшего порядка

map, filter, reduce, folds, for-each, варианты vector/string и apply вызывают гостевые процедуры через путь применения evaluator.

Кратко

LISPEX
(fold-right cons (list) (list 1 2 3))

Результат

OUTPUT
(1 2 3)

Текущие гарантии

  • Обход идёт слева направо; ошибки или escapes callback распространяются по общему пути сигналов.
  • fold-left — псевдоним левой свёртки; fold-right вызывает (f element accumulator) справа.
  • for-each выполняется ради эффекта и возвращает профильный unspecified-result как ноль значений.

Контракты callback

СигнатураОбход / результатКонтекст значений
(map proc list ...)слева направо; новый proper listcallback ровно одно значение
(filter predicate list)слева направо; сохранённые элементыpredicate ровно одно значение; отвергает только #f
(fold-left proc init list)левый accumulatorcallback ровно одно значение
(apply proc arg ... final-list)общий dispatcher; хвостовая безопасностьпакет результата процедуры сохранён
(for-each proc list ...)эффекты слева направоcallback одно значение; итог ноль значений

Границы

  • Host callbacks не обходят правила гостевых continuation, handler или value context.