Functional Programming in JavaScript
Книга посвящена применению принципов функционального программирования в JavaScript. Автор начинает с наглядной демонстрации преимуществ функционального подхода на примере разработки интернет-магазина, сравнивая императивный и функциональный стили. Затем подробно разбираются основы функционального программирования: чистые функции, функции высшего порядка, замыкания, рекурсия, ленивые вычисления и базовый инструментарий — map, filter, reduce.
Отдельная глава посвящена настройке среды разработки и обзору популярных функциональных библиотек: Underscore.js, Fantasy Land, Bilby.js, Lazy.js, Bacon.js, а также языков, компилируемых в JavaScript. Далее рассматриваются практические приёмы: частичное применение и каррирование, композиция функций, функциональное реактивное программирование и обработка событий.
Значительная часть книги отведена теории категорий: функторы, монады, обещания (promises), линзы и их реализация в JavaScript. В главе о продвинутых темах и подводных камнях обсуждаются хвостовая рекурсия, трамплининг, Y-комбинатор, мемоизация, области видимости и типичные ошибки.
Завершается книга сравнением функционального и объектно-ориентированного подходов в JavaScript, включая прототипное наследование, функциональное наследование, паттерн «Стратегия» и миксины. Приложения содержат справочник общих функций и глоссарий терминов.
