Java中的函数编程

rip*_*234 59 java functional-programming

Java中的函数式编程是否有一个很好的库?

我正在寻找像PredicateList.Find()这样的东西(作为静态方法).实现起来并不复杂,但在这里找到可重用的库会很不错.

dfa*_*dfa 44

FunctionalJava是最知名的图书馆; 它使用Java闭包(BGGA)作为例子:

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}  
Run Code Online (Sandbox Code Playgroud)

编辑

还检查lambdaj.

进一步编辑

BGGA完全是可选的.它只是为了更好的语法.

  • BGGA可用作预编译器,将{int i => i + 42}转换为新的F <Integer,Integer>(){public Integer f(Integer i){return i + 42; }}.后者将使用任何旧Java编译. (9认同)
  • 但BGGA实际上并不是Java.所以这不会编译,对吧? (5认同)

Gor*_*son 29

Scala是一种与Java完全兼容的函数式编程语言(通过JVM运行).它提供了面向对象和功能技术的完美组合,以及在泛型和并发方面对Java的许多改进.有人甚至说它可以取代Java.


hay*_*lem 27

Java库

有些图书馆可以帮助你做到这一点,已经为你做了一些腿部工作并隐藏了一些神秘的东西:

成熟/已建立的图书馆

更多模糊/实验库

这些将允许您使用更具功能性的方法编写Java代码,并且可能更熟悉的语法和语义,正如您期望的FP-competent语言.在合理范围内,就是这样.

JVM语言

显然,您可以在Java之上实现一种函数式语言.这样你就可以使用那个作为你的FP语言了.这是一个比你要求的更高级别的抽象,但相对在上下文中(虽然我在这里作弊,授予).

例如,退房:

相当成熟的语言

不太成熟或更模糊的语言

进一步阅读

您可能还想阅读或观看这些文章或视频:


从我的P.SE回答" 功能编程是否可能在Java中? "


Chi*_*Chi 13

Google集合有很多功能编程风格的实用程序方法.一些感兴趣的类是Iterables,Iterators,Function,Functions等

它也有一堆集合类!

  • 该库现在被Guava取代. (3认同)

mik*_*kej 12

功能性Java是值得一看的,而FunctionalJ则是另一种.

  • 功能Java只是一个库,但如果你想使用它,它可以使用BGGA闭包语法. (2认同)

Mar*_*sco 7

如果你想要一个纯Java解决方案,请查看lambdaj

http://code.google.com/p/lambdaj/

除了以DSL样式定义和使用闭包的可能性之外,它还允许以功能方式操作集合,而无需显式写入闭包或循环