Question

Je suis intéressé par l’utilisation de foncteurs (objets fonction) en Java. Avec googling rapide j'ai trouvé ces 3 paquets:

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.

Était-ce utile?

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é.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top