Articles of programmation fonctionnelle

Quels sont les avantages de Promises sur CPS et le continuating Functor / Monad?

Promesses ES6 ES6 Les promesses sont des machines à états finis et nécessitent donc des implémentations complexes. Au-delà de cela, la spécification Promise / A + comporte beaucoup de brouillons: Surchargé then (carte / chaîne) Aplanissement récursif / assimilation alors capable Levage automatique Plusieurs abonnés (multidiffusion) Évaluation avide La distribution multidiffusion et l'évaluation approfondie sont […]

La notation entre parenthèses pour les fonctions auto-invoquées a-t-elle un but en version Javascript?

Je me suis confondu quand je vois des exemples de fonctions anonymes auto-invoquées en Javascript comme ceci: (function () { return val;}) (); Existe-t-il une différence entre cette syntaxe et ce qui suit: function() { return val;} (); Si quelqu'un peut me donner une différence concrète, cela aiderait à mettre au repos une question qui […]

Index dans la fonction map ()

Il me manque une option pour obtenir le numéro d'index dans la fonction de la map l'aide de la List de Immutable.js : var list2 = list1.map(mapper => { a: mapper.a, b: mapper.index??? }).toList(); La documentation montre que map() renvoie Iterable<number, M> . Y a-t-il un moyen élégant de ce dont j'ai besoin?

Comment puis-je utiliser la méthode incluse dans lodash pour vérifier si un objet est dans la collection?

Lodash me permet de vérifier l'appartenance à des types de données de base avec: _.includes([1, 2, 3], 2) > true Mais ce qui suit ne fonctionne pas: _.includes([{"a": 1}, {"b": 2}], {"b": 2}) > false Cela me confond parce que les méthodes suivantes qui recherchent une collection semblent bien fonctionner: _.where([{"a": 1}, {"b": 2}], {"b": […]

Comment éviter les résultats intermédiaires lors de l'exécution d'itérations de tableau?

Lorsque vous travaillez avec des tableaux, des représentations intermédiaires sont nécessaires régulièrement, en particulier dans le cadre de la programmation fonctionnelle, dans laquelle les données sont souvent traitées comme immuables: const square = x => x * x; const odd = x => (x & 1) === 1; let xs = [1,2,3,4,5,6,7,8,9]; // unnecessary intermediate […]

Composition fonctionnelle d'une fonction 'non' booléenne (pas une valeur booléenne)

Je travaille dans TS mais afficherai le code tsc -> ES6 ci-dessous. J'ai une fonction 'isDigit' qui renvoie true si le code de caractère est dans la gamme de chiffres 0 à 9. Cette fonction (isDigit) doit être transmise en argument à une fonction d'ordre supérieur. const isDigit = (char, charC = char.charCodeAt(0)) => (charC […]

L'application Simple Node / Express, la manière de programmation fonctionnelle (Comment gérer les effets secondaires en JavaScript?)

Il existe de nombreux bons articles sur la théorie de la programmation fonctionnelle en JavaScript. Certains contiennent même des exemples de code montrant la différence entre la programmation impérative / orientée objet et la programmation déclarative / fonctionnelle. Mais je n'ai trouvé aucun qui montre, avec des exemples simples de code JavaScript, comment gérer les […]

Ensemble de matrices de matrices (matrice) à la verticale / élégante

Dans Javascript, si j'ai un tableau de tableaux représentant une matrice, disons x = [ [1,2,3,4], [5,6,7,8], [9,10,11,12] ]; La sommation "horizontale" est facile et peut se faire comme x.map(function(y){ return y.reduce(function(a,b){ return a+b; }); }); Maintenant, je voudrais calculer la somme "verticale", qui peut être effectuée x.reduce(function(a, b){ return a.map(function(v,i){ return v+b[i]; }); }); […]

Un raccourci pour Function.prototype.call.call?

Moyens d'appeler une fonction Considérez cette fonction simple: function my(p) { console.log(p) } Je peux l'appeler comme ceci: my("Hello"); Et aussi comme ça: my.call(this, "Hello"); De plus, ceci est possible: Function.prototype.call.call(my, this, "Hello"); Un raccourci pour la manière fonctionnelle Je suis intéressé par la dernière option – la plus fonctionnelle, mais comme c'est trop long, […]

Javascript: liaison à droite d'une fonction?

Comment puis-je me lier à droite de la fonction? Exemple: var square = Math.pow.bindRight(2); console.log(square(3)); //desired output: 9