60 votes

Programmation fonctionnelle en Java

Existe-t-il une bonne bibliothèque pour la programmation fonctionnelle en Java ?

Je cherche des trucs comme Prédicat y Liste.Rechercher() (en tant que méthode statique). Pas compliqué à mettre en œuvre, mais ce serait bien de trouver une bibliothèque réutilisable ici.

44voto

dfa Points 54490

FonctionnelJava est la bibliothèque la plus connue ; elle utilise les fermetures Java ( BGGA ) à titre d'exemple :

final Array<Integer> a = array(1, 2, 3);  
final Array<Integer> b = a.map({int i => i + 42});  
arrayShow(intShow).println(b); // {43,44,45}  

EDIT

Vérifiez également lambdaj .

Autres EDIT

Le BGGA est entièrement facultatif. Cela rend simplement la syntaxe plus agréable.

5 votes

Mais le BGGA n'est pas réellement en Java. Donc ça ne compilera pas, n'est-ce pas ?

9 votes

BGGA est disponible en tant que précompilateur qui traduit {int i => i + 42} en new F<Integer, Integer>() { public Integer f(Integer i) {return i + 42 ; }}. Ce dernier compilera avec n'importe quel vieux Java.

0 votes

C'est vrai, c'est un peu frustrant en effet

30voto

Gordon Gustafson Points 14778

Scala est un langage de programmation fonctionnel qui est entièrement compatible avec Java (s'exécute via la JVM). Il offre un beau mélange de techniques orientées objet et fonctionnelles ainsi que de nombreuses améliorations par rapport à Java en matière de génériques et de concurrence. Certains disent même qu'il pourrait remplacer Java.

27voto

haylem Points 11504

Les Bibliothèques Java

Il y a des bibliothèques qui peuvent vous aider à faire de ce, déjà à faire les démarches pour vous et cacher les arcanes de choses:

Mature / Bibliothèques Établies

De Plus Obscur / Expérimental Bibliothèques

Ces éléments vont vous permettre d'écrire du code Java avec une approche plus fonctionnelle et peut-être plus familier de la syntaxe et de la sémantique, comme vous vous attendriez d'un FP-compétente de la langue. Au sein de la raison, qui est.

JVM Langues

Et bien évidemment, vous pouvez mettre en œuvre un langage fonctionnel sur le dessus de Java. De sorte que vous pouvez ensuite l'utiliser comme votre langue FP. Ce qui est un peu un plus haut niveau d'abstraction que ce que vous avez demandé, mais relativement dans le contexte (même si je triche un peu ici, accordé).

Par exemple, découvrez:

Assez Matures Langues

Moins Matures ou Plusieurs Langues Obscures

Lectures Complémentaires

Vous pouvez aussi lire ou de regarder ces articles ou vidéos:


Prises à partir de mon P. SE de répondre à "la Programmation Fonctionnelle Est Possible en Java?"

0 votes

+1 Excellents liens de "lecture complémentaire" ! !!

13voto

Chi Points 8991

Collections Google possède une sélection décente de méthodes utilitaires de style programmation fonctionnelle. Certaines classes intéressantes sont Iterables, Iterators, Function, Functions, etc.

Il dispose également d'un grand nombre de classes de collection !

3 votes

La bibliothèque est maintenant remplacée par Guava.

12voto

mikej Points 30224

Java fonctionnel vaut la peine de jeter un coup d'oeil et FonctionnelJ en est une autre.

0 votes

Alors lequel ? De plus, pour les plus paresseux d'entre nous, peuvent-ils être utilisés sans les fermetures Java ? (En supposant que je veuille seulement une bibliothèque, et non quelque chose qui m'oblige à utiliser un compilateur différent).

2 votes

Functional Java n'est qu'une bibliothèque, mais elle fonctionne avec la syntaxe de fermeture BGGA si vous souhaitez l'utiliser.

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