Dans un article précédent, nous avons entrevu les possibilités offertes par l’utilisation des Blocks en Objective-C. Leur similarité avec les expressions lambda de la programmation fonctionnelle que vous pouvez retrouver dans Java 8, Scala ou bien encore JavaScript est évidente. Cependant, nous ne sommes pas habitué avec Objective-C à penser ou bien écrire dans un style fonctionnel. Cependant, il existe des libraries qui permettent de faciliter l’usage de l’approche fonctionnelle. Plusieurs projets ont même fleuri depuis la mise à disposition des blocks avec la sortie d’iOS4.
En JavaScript, la librairie underscore.js est très appréciée par les développeurs web pour sa simplicité et son efficacité. Cette librairie a d’ailleurs tellement de succès qu’elle a traversé la frontière des langages pour être implémentée en Objective-C! Il en existe à ce jour au moins deux implémentations, toutes les deux sous license MIT.
Le projet Underscore.m semble fournir un support plus abouti des fonctionnalités proposées par la librairie JavaScript originale, et surtout propose un site documentaire complet qui permet de démarrer rapidement et de trouver un grand nombre d’exemples.
Lire la suite de cet article »

Nous vous en parlions il y a quelques semaines dans notre revue de presse. Martin Odersky propose gratuitement, sur Coursera, une introduction à la programmation fonctionnelle à l’aide de Scala, le langage dont il est le père. Une dizaine de Xebians s’est inscrite et une folle course de huit semaines s’en est suivie. La session est désormais terminée, il est grand temps d’en faire le bilan.
Notez que ce bilan ne contient pas les solutions aux différents exercices. En effet, comme chaque étudiant, nous avons accepté le code d’honneur de Coursera qui nous interdit de les dévoiler. Ce type d’initiative est remarquable en soi, et c’est par respect pour le travail des participants, auteurs comme étudiants, que nous nous y conformons.
Lire la suite de cet article »
« Voilà une conception dont je peux être fier ! Elle n’est pas forcément extraordinaire, mais elle va simplifier drastiquement le code qui a été écrit. Bon, mettons la en pratique… Mais !… Que se passe-t-il ?… Noooon ! Pas de multidispatch, pas de multiméthode. Je vais devoir mettre du class cast et du instanceof partout. Java, je te hais ! »
Dans cet article, je vous propose de découvrir ce qu’il s’est passé.
Lire la suite de cet article »

La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia.
Evènements de notre communauté en France et à l’étranger
Lire la suite de cet article »
Dans un premier article, nous avons introduit le type monadique Option. Nous avons vu que ce type permet de traduire l’absence de valeur ou de résultat et comment l’exploiter efficacement à l’aide des méthodes map et flatMap. Si vous n’avez pas eu l’occasion de le lire, je vous encourage fortement à le faire avant de commencer la lecture de ce qui suit.
Dans ce nouvel article, je vous propose d’aborder le type monadique Either, particulièrement utile pour la gestion des erreurs et qui peut remplacer de manière très avantageuse les mécanismes de checked exceptions. Nous approfondirons à cette occasion notre compréhension des monades et nous verrons comment combiner deux types de monades différents.
Lire la suite de cet article »
Cet article est le premier d’une série dans laquelle nous étudierons les types dit monadiques fournis par Scala et couramment utilisés lors de développements d’applications. Un type monadique est un type de donnée répondant à certaines lois et généralement caractérisé dans Scala par la présence des méthodes map et flatMap, que nous aborderons ici même.
Cet article d’introduction aux monades nous montrera comment l’utilisation de ces types permettent de produire du code plus sûr et évolutif. Il sera suivi par une série d’articles ayant pour objectif de démystifier ce concept qui provient du monde de la programmation fonctionnelle (et plus particulièrement de Haskell) et débarque depuis peu dans le monde Java (grâce notamment au langage Scala ou à des frameworks tels que FunctionalJava). Ce sera aussi l’occasion de comprendre pourquoi l’expression « flatMap that shit ! » est utilisée avec autant de ferveur.
Lire la suite de cet article »
Dans cet article, je vous propose de vous plonger dans l’une des caractéristiques les plus intéressantes de la programmation fonctionnelle et de Scala en particulier : les fonctions d’ordre supérieur !
Qu’est ce qu’une fonction d’ordre supérieur ? C’est une fonction qui prend en argument une ou plusieurs fonctions et/ou qui retourne une fonction. Un exemple courant de fonction d’ordre supérieur en Scala est la fonction map permettant de transformer le contenu d’une liste par exemple :
scala> List(1, 2, 3).map { x => x * 2 }
res0: List[Int] = List(2, 4, 6)
La fonction d’ordre supérieur map prend en argument une fonction f: A => B où A est le type de départ (ici Int) et B le type d’arrivée (ici encore Int). Nous pouvons donc à l’aide de map et d’une fonction transformer une List[A] en List[B]. Les fonctions en Scala sont des first-class-citizen ce qui signifie qu’elles sont des objets (dans notre cas, {x => x * 2} est une instance de Function1) et donc passer une fonction en paramètre revient à passer un objet de type FunctionN.
Lire la suite de cet article »
Lors du XKE du mois de novembre, j’ai présenté une introduction à la programmation fonctionnelle. Cette présentation fût suivie d’une partie Hands On où les participants ont pu s’essayer (parfois dans la douleur, mais toujours dans la bonne humeur) à ce paradigme avec le langage Java. Je vous propose dans cet article un ensemble de solutions sur les exercices présentés. De quoi occuper vos longues soirées d’hiver.
Lire la suite de cet article »
François Sarradin a réalisé une introduction à la programmation fonctionnelle durant la session xke du mois de novembre. La présentation a précédé un Hands’on (une session qui permet aux participants de littéralement mettre les mains dedans).
Vous pouvez donc visionner cette introduction dans la vidéo ci-dessous. Le Hands’on est disponible sous Github : https://github.com/fsarradin/xke-fp/tree/xke-fp_2011-11
Tout ce que vous avez toujours voulu savoir sur la programmation fonctionnelle par François Sarradin
Tous les podcasts Xebia France :
Tout ce que vous avez toujours voulu savoir sur la programmation fonctionnelle par François Sarradin [ 1:00:04 ] Download

Clojure est un dialecte de Lisp fonctionnant sur la JVM. Dans cette présentation, Alex Miller s’adresse aux développeurs sans expérience préalable du langage. Son but est d’en présenter les concepts de base et de montrer la puissance et l’expressivité qui lui ont fait choisir Clojure comme langage principal chez son employeur actuel.
Lire la suite de cet article »