Rus*_*ott 13 java functional-programming functional-java guava
我想在我将要教授的课程中使用Functional Java或Guava(或者不太可能使用Scala).尽管在JVM上运行了很多函数式语言,但我仍然希望看到与Java尽可能相似的东西,即在Java 8中具有的功能特性,在概念和语法上最兼容的东西. .
它看起来像Functional Java和Guava是最好的候选者.我无法在功能,易用性,概念接近直接Java等方面找到任何比较它们的东西.有没有人知道这些库之间的良好比较?
Tho*_*ung 17
Guava的目标不是在Java中提供功能习语.从Functional Explained Guava wiki页面:
过度使用Guava的函数式编程习语会导致冗长,混乱,难以理解和低效的代码.这些是迄今为止最容易(也是最常见)被滥用的番石榴部分,当你为了使你的代码"单线"而荒谬的长度时,番石榴团队就会哭泣.
在使用Guava的功能实用程序时,请确保传统的命令式处理方式不易读取.试着把它写出来.真是太糟糕了吗?那比你想要尝试的荒谬笨拙的功能方法更具可读性吗?
由于开销过高(参见垂直问题),因此过度依赖功能习语对Java 7没有多大意义.这将随Java 8而改变,这将改变Java库和程序在详细级别上的设计方式.在Java 8中,在某种程度上不鼓励Java中有意义的事情.这将激发新版的Effective Java和许多新的API.
如果您正在尝试教授函数式编程,那么最好坚持使用(或多或少)纯函数式语言.每种语言都是FP和OOP的混合(或仿真)会分散注意力.
如上所述,Guava只是一个Java库 - 一个Java 5兼容的库,甚至(从版本11开始).Kaava对函数式编程的定位由Kevin Bourrillion总结:
"语法很糟糕.与此同时,这些东西现在,一直是并且永远只是一个权宜之计,直到正确的语言变化出现,此时我们终于可以真正决定最佳语法并开始功能式编程实际上,在Java中让生活变得更好.所以我决定投入功能/谓词的工作量是多少; 它更像是在图书馆,因为它必须是,而不是因为我们认为它是一个皇冠上的宝石."