Свёртки наглядно: интерактивный foldl

Этот пост — демонстрация «богатого» формата: прямо в тексте живёт интерактивный компонент (island), встроено видео и отрендерены формулы. Всё это статически собирается, а интерактив подгружается на клиенте только когда нужен.
Что такое левая свёртка
Левая свёртка проходит список слева направо, протаскивая аккумулятор. В Haskell:
foldl :: (b -> a -> b) -> b -> [a] -> b
foldl _ acc [] = acc
foldl f acc (x : xs) = foldl f (f acc x) xs
Формально для списка и функции с начальным значением :
Пощупать руками
Ниже — настоящий island на Preact. Выбери операцию и шагай по свёртке, наблюдая,
как меняется аккумулятор. Компонент интерактивен только на клиенте
(client:visible), а разметка вокруг остаётся статической:
foldl (+) 0 [3, 1, 4, 1, 5, 9, 2] → аккумулятор = 0
Обрати внимание: для сумма начальное значение , для произведение
— нейтральные элементы соответствующих моноидов.
Видео-эмбед
Видео подключается через astro-embed — оно ленивое (грузится по клику, без веса
плеера в начальной загрузке):
Итог
Один и тот же движок блога отдаёт и минималистичный текстовый пост, и вот такой интерактивный — за счёт MDX и Astro Islands. Ровно то, ради чего выбран Astro.