Прагматичное функциональное программирование на JavaScript

Если вы следили за моими недавними сообщениями, то нет ничего удивительного в том, что я являюсь ярым поклонником функционального программирования. Я попытался решить задачи Advent of Code 2021, используя как Haskell, так и JavaScript, чтобы найти идиоматическое функциональное решение. К сожалению, по ходу дела я понял, что некоторые подходы и техники не применимы в JavaScript. Это привело меня к выводу, что функциональное программирование имеет разные вкусы, и важно найти правильное сочетание для выбранного языка.

JavaScript — это язык, который я использую чаще всего (по своей воле или нет), и, к счастью, он достаточно хорошо поддерживает функциональное программирование. Я думаю, что минимальное требование, необходимое для того, чтобы язык мог претендовать на поддержку функционального программирования, — это эргономичная поддержка функций высшего порядка. (Функции первого класса — это требование для функций высшего порядка). Под эргономичной поддержкой я понимаю то, что она должна быть естественной, а не диковинной. Функции высшего порядка очень хорошо работают в JavaScript, особенно со стрелочными функциями ES6.

Отсутствие некоторых возможностей, таких как статические типы (в частности, алгебраические типы данных), сопоставление шаблонов или неизменяемые структуры данных, ограничивает методы, которые мы можем использовать без ущерба для эргономики, но, к счастью, вы можете далеко продвинуться и без этих возможностей.

Недавно я наткнулся на два ресурса, которые помогли мне продумать прагматичное функциональное программирование на JavaScript. Первый — это доклад Ричарда Фельдмана, в котором отлично объясняется, зачем нужно функциональное программирование. Вторая — это книга Кайла Симпсона, в которой он предлагает свой вкус функционального программирования, который практически применим в JavaScript. Есть некоторые области, где мое мнение расходится с мнением Кайла, но эта книга знакомит с прагматичным функциональным программированием с первых принципов. Также ознакомьтесь с Mostly Adequate Guide to Functional Programming.

Изучение функционального программирования и выяснение того, как использовать его на практике, было очень долгим путешествием, и я думаю, что многие люди испытывали те же разочарования, что и я в процессе обучения. Хотя парадигма функционального программирования набирает обороты, практические ресурсы тонут в шуме как несогласных, так и тех, кто просто едет на поезде шумихи. Это начало серии статей, в которых мы попытаемся разобраться в обилии информации и перевести ее в практические выводы.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *