Meilleur Java Functor lib: JGA, functor commun, mangue ou & # 8230 ;?
Question
Je suis intéressé par l’utilisation de foncteurs (objets fonction) en Java. Avec googling rapide j'ai trouvé ces 3 paquets:
- Algorithmes Java Generics: http://jga.sourceforge.net/
- Fonctions communes: http://commons.apache.org/sandbox/functor/
- Mango: http://www.jezuk.co.uk/cgi- bin / view / mango
et sur 3, JGA semblait avoir le meilleur design. Mais je soupçonne que les personnes ici qui ont réellement utilisé un ou plusieurs des packages pourraient être en mesure d’expliquer davantage le pour et le contre de ces (et peut-être d’autres) packages de foncteurs.
La solution
La bibliothèque de collections Google fournit un Fonction
. interface similaire (mais probablement pas aussi détaillée).
Autres conseils
Mangue
Fournit des interfaces pour les fonctions à 0, 1 et 2 arguments. Utilise les génériques Java. Bon choix d’algorithmes pour travailler avec des fonctions.
JGA
Fournit des classes pour 0, 1, 2 et un nombre arbitraire de fonctions d’argument. Les objets de domaine sous-classent ceux-ci. Utilise les génériques Java. Large gamme d'algorithmes. Inclut JFXG (Java Functor eXpression Grammar) - un langage analysé destiné à faciliter la création de foncteurs arbitrairement complexes. Fournit plusieurs algorithmes pour utiliser des fonctions.
Functor Apache Commons
Fournit des interfaces pour les fonctions d’argument 0, 1 et 2, ainsi que pour les procédures d’argument 0, 1 et 2 (qui ne renvoient aucune valeur). Utilise les génériques Java. Bonne gamme d'algorithmes.
Google Guava (auparavant, collections Google)
Fournit les interfaces Function et Predicate pour les fonctions à un seul argument. Utilise les génériques Java. Fournit uniquement la méthode de composition pour combiner des fonctions. Assez basique.
FunctionalJ
Fournit des interfaces et des classes pour 0, 1, 2 et un nombre arbitraire de fonctions d’argument. Utilise les génériques Java. Les méthodes existantes peuvent être transformées en fonctions via les classes de réflexion de fonction fournies.
J'espère ne choquer personne en disant qu'un objet de fonction n'est pas un foncteur. Recherchez le functor sur wikipedia. Et s'il vous plaît, arrêtez d'utiliser ce terme à mauvais escient.
swensen.functional, http://www.codeproject.com/KB/java /FunctionalJava.aspx , par vous-même.
Fournit des interfaces génériques à méthode unique encapsulant des fonctions d'argument (FuncX) et des procédures (ActionX) de 0 à 5 arguments. Inclut également un foncteur Predicate (classe abstraite implémentant Func2 Pro: des hiérarchies de types simples, mais efficaces, ne sapant pas l’esprit de fp.
Contre: Nouveau et pas encore testé.