Fonctionnel
-
Callbacks strike Back
Cet article se place dans la continuité de l’article précédent: Il y a peut être une option pour continuer ¡¿. Avant de présenter de nouvelles techniques – les promises / deferred / future – nous commencerons par transposer les techniques vues précédement en javascript. En poussant le bouchon un peu plus loin, nous verrons les [...]
-
Les fonctions et les fonctions d’ordre supérieur
La programmation fonctionnelle a de nombreux attraits dont le traitement réservé aux fonctions. Dans beaucoup de langages de programmation les fonctions ont un statut particulier. Par exemple en Java il est possible de créer un entier, de l’assigner à une variable ou de le passer comme argument à une autre fonction mais on ne peut [...]
-
Il y a peut être une option pour continuer ¡¿ (réflexion sur la programmation par continuation)
L’une des difficultés principales lorsque l’on aborde la programmation par événement est qu’il faut changer sa manière de penser: l’appel d’une méthode ne renvoie pas de résultat. Lorsque le résultat est disponible, celui-ci est à son tour publié sur un bus ou fourni à une fonction de rappel passée en paramètre lors de l’appel. C’est [...]
-
La gestion des erreurs avec scala.util.Try (2/2)
Suite de l’épisode précédent. Après la découverte des bases de la gestion des erreurs avec scala.util.Try, nous allons, dans cette deuxième partie, explorer des fonctionnalités plus avancées. Nous utiliserons un exemple très simple pour illustrer nos propos : lancer un serveur sur un numéro de port fourni par l’utilisateur. Cette tâche se décompose en deux [...]
-
La gestion des erreurs avec scala.util.Try (1/2)
Scala 2.10 introduit une nouvelle structure monadique Try. Cette classe est particulièrement adaptée à la représentation d’un traitement pouvant réussir en renvoyant une valeur ou échouer en lançant une exception. Commerçons par un exemple simple : parser un numéro de port renseigné par un utilisateur sous forme d’une chaîne de caractères. 1 2 val input: String [...]
-
Les type classes Scala : exemple sur une sérialisation MongoDB (2/2)
Dans la première partie, nous avons introduit les types classes et avons créé une API pour travailler avec MongoDB en Scala. Dans cette partie, nous allons voir comment améliorer cette API grâce aux paramètres implicites. Scala donne la possibilité d’annoter les paramètres d’une méthode comme étant des paramètres “implicites”. Un paramètre implicite d’une méthode est un [...]
-
Les type classes Scala : exemple sur une sérialisation MongoDB (1/2)
S’il y a un pattern que vous ne pouvez pas rater dans les librairies écrites en Scala ou dans les articles de blog consacrés à ce langage ce sont bien les “type classes”. Une type classe offre un moyen de définir un comportement commun à plusieurs types. Elle définit une interface commune, mais pas au [...]
-
Inspiration fonctionnelle – Revisitons la méthode With
Retour sur le tout premier billet pour amélioration Ce billet est le quatrième d’une série sur la façon dont la programmation fonctionnelle, et la formation F# à laquelle j’ai récemment assisté, m’apportent de l’inspiration dans mon travail quotidien en C#. Je vais y proposer une autre implémentation de la méthode “With”, qui fonctionne cette fois [...]
-
Inspiration fonctionnelle – Irrelevantable, partie 2
Tentons d’exprimer quelque chose de plus que Nullable<T> Pas de soirée Craftsmanship hier soir pour moi… un peu déçu, mais au moins j’en ai profité pour avancer sur la mise en ligne de ce billet ! Il s’agit du troisième billet d’une série sur la façon dont la programmation fonctionnelle, et la formation F# à [...]
-
Inspiration fonctionnelle – Irrelevantable, partie 1
Tentons d’exprimer quelque chose de plus que Nullable<T> Ce billet est le deuxième d’une série sur la façon dont la programmation fonctionnelle, et la formation F# à laquelle j’ai récemment assisté, m’apportent de l’inspiration dans mon travail quotidien en C#. Ce post présentera une manière de construire un type générique Irrelevantable<T> en C#, et comment [...]