12 votes

Quel est un bon exemple de programmation web de style fonctionnel utilisant javascript ?

Je fais du javascript quotidiennement en ce moment. Je viens d'un milieu OO et la plupart du code avec lequel je suis en contact est un peu de style procédural/OO. Je suis à la recherche de bons exemples qui résolvent des tâches plus ou moins typiques de la programmation web mais d'une manière fonctionnelle.

Je ne suis pas intéressé par un exemple arbitraire qui ressemblerait à un exemple fonctionnel. Je cherche un exemple qui montre comment utiliser les pouvoirs fonctionnels pour résoudre des problèmes mieux qu'avec une autre approche. Je sais que c'est un peu subjectif et que cela dépend du style, mais ne vous rendez pas la tâche trop difficile (à moi-même).

17voto

Rodrick Chapman Points 2981

Tout d'abord, vous devez comprendre ce que signifie la programmation fonctionnelle, c'est-à-dire quels sont les concepts fondamentaux et dans quelle mesure le langage vous permet d'adhérer à ces concepts. Pour la POO, les concepts fondamentaux sont l'encapsulation, l'héritage et le polymorphisme (ou simplement le passage de messages pour les petits parleurs). Pour le langage FP, le principe central est le suivant transparence référentielle (ce qui implique l'apatridie). Essayer de programmer dans un style fonctionnel dans un langage qui ne prend pas en charge les caractéristiques fonctionnelles (par exemple, les fonctions en tant qu'objets de première classe) sera difficile, voire impossible. Il en va de même pour la programmation en OOP dans des langages qui n'ont pas de fonctionnalités OOP.

Heureusement, Javascript est multi-paradigme et supporte les deux. Au lieu de chercher des exemples de code "fonctionnel", pensez simplement à toutes les façons dont vous pouvez assurer la transparence référentielle. naturellement conduire à l'utilisation des fonctionnalités FP du langage telles que les lambdas, les fermetures, les fonctions d'ordre supérieur (par exemple, map, reduce, filter), le curry, etc.

Sérieusement, il ne s'agit pas d'une non-réponse. Je pense vraiment que c'est la façon la plus motivante et la plus efficace de l'aborder.

Cela dit, voici quelques liens qui, je l'espère, seront utiles.

  1. Programmation FP en JavaScript

  2. Un guide des PF tout à fait adéquat

5voto

Kevin Hakanson Points 15498

Douglas Crockford renvoie à JavaScript fonctionnel de son JavaScript page de ressources. Voici un extrait du site :

Fonctionnel est une Balance fonctionnelle en JavaScript. Elle définit les fonctions d'ordre supérieur standard telles que map, reduce (aka foldl), et select (alias filter). Il définit également telles que curry, rcurry et partial pour les fonctions partielles et compose, guard et until pour la programmation au niveau de la fonction. Toutes ces fonctions acceptent les des chaînes de caractères, telles que "x -> x+1", "x+1" ou '+1' comme synonymes de la fonction plus verbeuse function(x) {return x+1}.

1voto

Norbert Hartl Points 4509

Un exemple dont je me souviens est celui d'une fonction liée à un objet pour l'enregistrer en tant que gestionnaire d'événements

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

Il traite des champs d'application (curry) et est pratique.

0voto

pluckyglen Points 684

Jetez un coup d'œil à jQuery . Ce blog montre bien qu'il s'agit d'un style fonctionnel. http://importantshock.wordpress.com/2009/01/18/jquery-is-a-monad/

Cela dit, JS n'est pas vraiment un langage fonctionnel (IMO), donc essayer de le forcer à l'être n'est probablement pas le chemin le plus efficace en tant que développeur (utiliser un tournevis comme un marteau - ça permet quand même de planter le clou dans le mur, mais pas aussi vite :). Encore une fois, c'est un langage lambda.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X