• 函数式编程框架 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

  • 相关阅读:
    CORTEX-A7芯片中断系统基本原理与控制方法
    MyBatisPlus(二十一)乐观锁
    Linux 中的 chage 命令及示例
    【C语言】编译和链接
    判断 async/await 是否对性能产生了负面影响
    vue-devtools插件安装
    8 个常用的 Wireshark 使用技巧,一看就会
    会计分录-初级会计职称
    异常情况下的生命周期
    Logger.error还不知道怎么传参打印?看完这个你就明白了
  • 原文地址:https://blog.csdn.net/zhuqiuhui/article/details/134498663