Что является хорошим примером для функционального стиля веб-программирования с использованием JavaScript? - PullRequest
12 голосов
/ 07 мая 2009

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

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

Ответы [ 4 ]

17 голосов
/ 07 мая 2009

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

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

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

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

  1. FP программирование на JavaScript

  2. Практически адекватное руководство по FP

5 голосов
/ 07 мая 2009

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

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

1 голос
/ 07 мая 2009

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

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

Он имеет дело с областями действия (карри) и удобен.

0 голосов
/ 07 мая 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...