最好的Java Functor lib:JGA,commons functor,mango,还是……?

我有兴趣在Java中使用仿函数(函数对象)。 通过快速谷歌搜索我发现这3个包:

  • Javagenerics算法: http : //jga.sourceforge.net/
  • Commons functor: http : //commons.apache.org/sandbox/functor/
  • 芒果: http : //www.jezuk.co.uk/cgi-bin/view/mango

而且,JGA似乎可能拥有最好的设计。 但我怀疑其他人实际使用过一个或多个软件包可能能够提供更多关于这些(也许是其他)函子包的优缺点的见解。

Google Collections Library提供了类似的Function接口(尽管可能没有那么深入)。

芒果

提供0,1和2参数函数的接​​口。 使用Javagenerics。 用于处理函数的良好算法范围。

JGA

提供0,1,2和任意数量的参数函数的类。 域对象是这些的子类。 使用Javagenerics。 广泛的算法。 包括JFXG(Java Functor eXpression Grammar) – 一种解析语言,旨在使创建任意复杂的仿函数变得容易。 提供多种算法来处理函数。

Apache Commons Functor

提供0,1和2参数函数的接​​口以及0,1和2参数过程(不返回任何值)。 使用Javagenerics。 良好的算法范围。

Google Guava(谷歌collections)

为单个参数函数提供Function和Predicate接口。 使用Javagenerics。 仅提供组合函数的撰写方法。 很基本的。

FunctionalJ

提供0,1,2和任意数量的参数函数的接​​口和类。 使用Javagenerics。 现有方法可以通过提供的函数reflection类转换为函数。

我希望通过告诉函数对象不是函子,我不会冒犯任何人。 在维基百科上查找仿函数。 请不要滥用这个词。

swensen.functional, http://www.codeproject.com/KB/java/FunctionalJava.aspx ,由Yours Truly撰写。

提供封装0到5个参数函数(FuncX)和过程(ActionX)的单个方法通用接口。 还包括一个Predicate仿函数(实现Func2 的抽象类)和另外三个旨在与旧版Comparator,Runnable和Callable仿函数兼容的其他函数。 为了使它变得有用,一个不可变的Iterable类型(可从所有数组和Iterables构造)具有方法链,惰性求值和function投影,如filter,map和fold。

专业:简单而有效,没有复杂的类型层次结构破坏了fp的精神。
骗局:新的,还没有经过考验。