当前位置: 首页 > 知识库问答 >
问题:

Java8提供函数式风格但不是函数式编程的说法是真的吗?

淳于烈
2023-03-14
 Calculator calc = (i, j) ->  i/j;

如果是的话,那为什么我们到处都是用Java8进行函数式编程的文章呢?

共有1个答案

鄂慈
2023-03-14

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

  1. 关注不变性
  2. 函数的引用透明度
  3. 副作用限制(来自1和2)
  4. 基于表达式,没有语句。语句不是一流的。
  5. 用作一级值。
  6. 状态改变为一级值(例如Clojure原子)。
  7. 作为基本单位的代数数据类型。
  8. 通过类型系统强制执行上述部分或全部内容。

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

 类似资料:
  • 函数式编程 -> 函数响应式编程 现在大家已经了解我们是如何运用函数式编程来操作序列的。其实我们可以把这种操作序列的方式再升华一下。例如,你可以把一个按钮的点击事件看作是一个序列: // 假设用户在进入页面到离开页面期间,总共点击按钮 3 次 // 按钮点击序列 let taps: Array<Void> = [(), (), ()] // 每次点击后弹出提示框 taps.forEach {

  • Python 提供了一个 functools 的模块,该模块为高阶函数提供支持,partial 就是其中的一个函数,该函数的形式如下: functools.partial(func[,*args][, **kwargs]) 这里先举个例子,看看它是怎么用的。 假设有如下函数: def multiply(x, y): return x * y 现在,我们想返回某个数的双倍,即: >>> mu

  • 函数式编程(functional programming)是一种编程范式(Programming paradigm),或者说编程模式,比如我们常见的过程式编程是一种编程范式,面向对象编程又是另一种编程范式。 函数式编程的一大特性就是:可以把函数当成变量来使用,比如将函数赋值给其他变量、把函数作为参数传递给其他函数、函数的返回值也可以是一个函数等等。 Python 不是纯函数式编程语言,但它对函数式

  • 函数式编程 面向值(value-oriented )编程有很多优势,特别是用在与函数式编程结构相结合。这种风格强调值的转换(译注:由一个不变的值生成另一个不变的值)而非状态的改变,生成的代码是指称透明的(referentially transparent),提供了更强的不变型(invariants),因此容易实现。Case类(也被翻译为样本类),模式匹配,解构绑定(destructuring bi

  • ​函数式编程是一种声明式编程。 First-class function 纯函数 高阶函数

  • 什么是函数式编程 到现在我们已经讲了很多了,但还没有真正涉及到函数式编程。 目前所讲的所有特性 - 丰富的数据类型(rich data types), 模式匹配(pattern matching), 类型推导(type inference), 嵌套函数(nested functions) - 可以想象它们都可以在一种”超级C“语言中存在。这些特性当然很酷,它们使得代码简洁易读,减少bug,但是它们