首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这句话是真的吗,Java 8提供了函数式风格,但不是函数式编程?

这句话是真的吗,Java 8提供了函数式风格,但不是函数式编程?
EN

Stack Overflow用户
提问于 2019-11-01 19:59:12
回答 1查看 126关注 0票数 0

这句话是真的吗,Java 8提供了函数式风格,但不是函数式编程,因为它使用的语法也是一个对象?

代码语言:javascript
复制
 Calculator calc = (i, j) ->  i/j;

如果是,那么为什么我们到处都是关于Java 8函数式编程的文章呢?

EN

回答 1

Stack Overflow用户

发布于 2019-11-02 01:04:01

以下是抽象FP概念的(非详尽)列表:

functions

  • Limitations on
  1. 关注immutability
  2. Referential透明度的副作用(来自1& 2)
  3. Expression-based,no语句。语句不是first-class.
  4. Functions,因为第一类数据类型会作为第一类值进行更改(例如,Clojure values.
  5. State atoms).
  6. Algebraic数据类型作为基础数据类型,通过类型系统units.
  7. Enforcing上述部分或全部内容。

我可以继续下去。一种语言不需要勾选列表中的每一个方框才能成为“函数式编程语言”(我实际上想不出任何符合所有这些要点的方框),但它勾选的方框越多,您给它贴上标签的资格就越少。这就是为什么Java在许多函数式程序员的眼里不合格的原因:它只是不能检查上面的许多项(可以说只有一项)。

这并不是说你不能用Java进行函数式编程,但它很难。该语言为您提供的工具太少,这意味着您将不得不编写大量样板来将必要的原语编码为类,这意味着您的代码将变得更慢且更难遵循(这是在您遇到这些原语的15个不同的竞争即席库实现之前)。

你可以把你的对象当作不可变的,更喜欢表达式而不是语句(比如使用三元运算符而不是if/else),让你的大多数方法成为纯函数,使用lambdas等等,但最终还是会有很多摩擦,无论是语言还是社区的期望。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58658878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档