Эта книга рассказывает о парадигме функционального программирования в общем. Мы будем использовать самый популярный в мире функциональный язык программирования: JavaScript. Некоторые из вас могут сказать, что это не самый удачный выбор, потому что в данный момент в JavaScript преобладают императивные тенденции. Однако, я считаю, что JavaScript — это лучший способ знакомства с функциональным программированием по нескольким причинам:
-
Вы, скорее всего, и так каждый день используете его в своей работе.
Это открывает возможность воспользоваться полученным знанием в реальных прикладных программах, в отличие от тех проектов, которые вы пишите в качестве хобби по выходным на каком-нибудь экзотическом языке.
-
Вам не потребуется учить язык с нуля для того, чтобы начать писать программы.
В чисто функциональном языке у вас не получится залогировать значение переменной или получить элемент DOM без использования монад. Пока мы не освоили все приёмы функционального программирования, благодаря смешанной парадигме JS, можно немного сжульничать и воспользоваться приёмами из ООП.
-
JS отлично подходит для написания первоклассного функционального кода.
В JS у нас есть всё что нужно для имитации Scala или Haskell с помощью парочки небольших библиотек. В данный момент ООП доминирует в индустрии, но он очень неудобен в Javascript’е, примерно также, как пойти с палатками на трассу или танцевать чечётку в сапогах. Чтобы случайно не потерять контекст
this
, мы повсеместно используемbind
. Забыли написатьnew
? Будьте готовы к причудливым ошибкам. В JS пока что нет классов, а приватные поля доступны только через замыкания. Многие из нас считают функциональное программирование более подходящим вариантом для JS.
Учитывая всё вышесказанное, бесспорно, лучше всего для примеров из этой книги подойдут типизированные функциональные языки. JavaScript поможет нам познакомиться с подходом к программированию функционально, какой язык использовать для его применения — решать вам. К счастью, все интерфейсы математические и, посему, универсальные. Вы будете комфортно себя чувствовать, используя swiftz, haskell, purescript и другие математически-ориентированные языки.
http://drboolean.gitbooks.io/mostly-adequate-guide/
https://www.gitbook.com/download/epub/book/drboolean/mostly-adequate-guide
https://www.gitbook.com/download/mobi/book/drboolean/mostly-adequate-guide
git clone https://github.com/MostlyAdequate/mostly-adequate-guide-ru
cd mostly-adequate-guide-ru/
npm install gitbook-cli -g
gitbook init
brew update
brew cask install calibre
gitbook mobi . ./functional.mobi
Перевод названия главы будет появляться как только будет доступен перевод самой главы.
- Глава 1: О чём вообще пойдёт речь?
- Глава 2: Функции первого класса
- Глава 3: Чистое счастье с Чистыми функциями
- Глава 4: Каррирование
- Глава 5: Пишем код с использованием композиции
- Глава 6: Пример приложения