Подтвердить что ты не робот

Что является хорошим примером для веб-программирования функционального стиля с использованием javascript?

Я делаю javascript на ежедневной основе в данный момент. Я исхожу из OO-фона, и большая часть кода, с которым я контактирую, имеет несколько процедурный/OO-стиль. Я ищу хорошие примеры, которые решают более или менее типичные задачи веб-программирования, но функционально.

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

4b9b3361

Ответ 1

Во-первых, вы хотите понять, что означает функциональное программирование; то есть, каковы основные понятия и насколько хорошо язык позволяет вам придерживаться этих концепций. Для ООП основными понятиями являются инкапсуляция, наследование и полиморфизм (или просто передача сообщений для маленьких игроков). Для FP центральный принцип ссылочная прозрачность (что подразумевает безгражданство). Попытка программирования в функциональном стиле на языке, который не поддерживает функциональные функции (например, функции как объекты первого класса), будет неудобным, если не невозможным. То же самое с программированием в ООП на языках, которые не имеют функций ООП.

К счастью, Javascript - это мультипарадигма и поддерживает оба. Вместо того, чтобы искать примеры кода, который является "функциональным", просто подумайте обо всех способах обеспечения ссылочной прозрачности, и это, естественно, приведет к использованию функций FP языка, таких как lambdas, замыкания, функции более высокого порядка (например, карта, уменьшить, фильтровать), currying и т.д.

Серьезно, это не значит, что это не ответ. Я действительно считаю, что это самый мотивирующий и эффективный способ его приближения.

Тем не менее, вот некоторые полезные ссылки.

Ответ 2

Дуглас Крокфорд ссылается на Функциональный JavaScript из JavaScript ресурс. Вот фрагмент с сайта:

Функциональная - это библиотека для функциональных программирование в JavaScript. Он определяет стандартные функции более высокого порядка таких как карта, уменьшить (aka foldl) и выберите (aka filter). Он также определяет такие функции, как карри, rcurry и частичный для частичной функции выражение; и сочинять, охранять и пока для программирования на уровне функций. И все эти функции принимают строки, такие как "x → x + 1", "x + 1" или '+1' как синонимы для более подробных function (x) {return x + 1}.

Ответ 3

Одним из примеров, который я помню, является функция, привязанная к объекту для регистрации в качестве обработчика событий

function bind(aHandler, aBind) {
    var handler = aHandler;
    var bind = aBind;
    return function(event) {
        return handler.call(bind, event);
    }
}

Он имеет дело с областями (currying) и удобен.

Ответ 4

Посмотрите jQuery. Этот блог делает хорошее дело, что он в функциональном стиле. http://importantshock.wordpress.com/2009/01/18/jquery-is-a-monad/

Тем не менее, JS на самом деле не является функциональным языком (IMO), поэтому попытка заставить его быть одним из них, вероятно, не самый эффективный путь как разработчик (используя отвертку как молоток), все еще получает гвоздь в стена, но не так быстро:). Опять же, это лямбда-язык.