公司中英文网站建设,天津网站制作企业,施工企业安全生产管理规范最新版,专业做网站机构文章目录 一、函数式编程起源二、functionaljava 框架简介 一、函数式编程起源
函数式编程起源于数理逻辑#xff08;范畴论#xff0c;Category Theory#xff09;#xff0c;起源于λ演算#xff0c;这是一种演算法#xff0c;它定义一些基础的数据结构#xff0c… 文章目录 一、函数式编程起源二、functionaljava 框架简介 一、函数式编程起源
函数式编程起源于数理逻辑范畴论Category Theory起源于λ演算这是一种演算法它定义一些基础的数据结构然后通过归约和代换来实现更复杂的数据结构而函数本身也是它的一种数据。所以函数式编程语言 Scala、Groovy、Clojure 、Haskell 等中引入了一些数学上抽象的知识需要借助于相关知识来辅助学习。 λ演算是一套从数学逻辑中发展以变量绑定和替换的规则来研究函数如何抽象化定义、函数如何被应用以及递归的形式系统。它由数学家阿隆佐·邱奇在 20 世纪 30 年代首次发表。lambda 演算作为一种广泛用途的计算模型可以清晰地定义什么是一个可计算函数而任何可计算函数都能以这种形式表达和求值它能模拟单一磁带图灵机的计算过程尽管如此lambda演算强调的是变换规则的运用而非实现它们的具体机器。 —摘自于 wikipedia 函数式编程的特性如下下面介绍的 functionaljava 框架基本实现了这些特性
函数是一等公民闭包和高阶函数惰性Lazy计算每一步都是单纯的运算而且都有返回值。纯函数输入一定时输出一定。即输出不受外部环境影响同时也不影响外部环境无副作用。递归调用函数柯里化函数元降维技术Immutable 不可变性Composition 函数组合将多个单函数进行组合像流水线一样工作…
这里讲述函数式编程起源的原因是为了更好地理解函数式编程λ演算是函数式编程的基础比如λ演算能模拟单一磁带图灵机的计算过程编程式语言都具备λ演算的规则和特性。
二、functionaljava 框架简介
JDK8 引入了 lambda 表达式吸收了函数式编程的部分特性目的是对现有编码语义的优化减少语法冗余。轻量级的将代码封装为数据使代码简洁易于理解。但 Java 非函数式编程语言。有兴趣的同学可结合函数式编程的起源来理解 JDK8 的 lambda 表达式使用。functionaljava 框架是一个提升 Java 函数式编程的开源库该库实现了许多基本和高级编程抽象有助于面向组合式的开发。该框架同样可以作为学习函数式编程概念的平台。
学习一种新概念需要进行思维的转变函数式编程不同于面向对象编程最好结合 functionaljava 中的 demo 和源码来理解函数式编程思想。以下是 functionaljava 框架的知识图谱 附functionaljava github 地址https://github.com/functionaljava/functionaljava