Возьмем немного функций высшего порядка, добавим частичное применение функций, приправим fold с map-ом и получим Javascript DSL для работы с DOM.
Человеческим языком:
Простое и понятное введение в функциональное программирование на чистом и понятном Javascript.
В отличие от «Через тернии к Haskell» все разжевано (возможно даже слишком) и разложено по полочкам.
Прочтение статьи развоплотит миф о неприменимости ФП в реальной жизни. Вы сможете смотреть на решение одной и той же задачи с разных точек зрения. Прямо как на картинке.
Функции
Начнем с простого определения функции.
function add(a,b){
console.log(a+b);
};
Можно тот же код записать по-другому.
var add = function(a,b){
console.log(a + b);
};
Одним из больших плюсов Javascript является то, что функции в нем являются полноценными объектами. Настоящие First Class Citizen.
В отличие, например от Java, где функция отдельно от объекта существовать не может.
Приведенная выше функция работает с побочными эффектами, то есть изменяет состояние внешнего мира. Это выражается в использовании console.log().
А теперь рассмотрим пример чистой функции.
var add = function(a,b){
return a + b;
};
Чистые функции не производят побочных эффектов. Вы передаете в них какие-то данные, и они отдают вам данные обратно. Их очень просто анализировать. Их легче тестировать. Не надо проверять внешние зависимости. Поэтому в большинстве случаев чистые функции предпочтительнее функций с побочным эффектам.
Но, с другой стороны, программа состоящая исключительно из чистых функций не несет практического смысла. Она ничего не считывает и не выводит.
Поэтому логично будет писать программы таким образом, чтобы отделить чистые функции от функций с побочными эффектами и таким образом упростить себе жизнь.
Итак, первое правило функционального программирования —