学习笔记-函数式编程思维

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010176014/article/details/85911994


读书《函数式编程思维》(Neal Ford 著) 目前理解的函数式编程思维,是一种抽象的映射关系,输入和输出之间的映射。应用这样的抽象,让我们不用关注于低层次细节的实现。最直观的感受就是Java8中的lambda也太好用了啊~

函数式编程思维

  • 主要内容
  • 演化的语言
  • 现实应用
  • 多语言与多范式

主要内容

	范式转变

范式主要包含命令式,声明式和函数式。
命令式:指程序是一系列改变状态的命令。
函数式:将程序描述为表达式和变换,以数学方程的形式建模,并尽量避免可变的状态。
声明式:它描述目标的性质,让计算机明白目标,而非流程。例如Mysql ,正则等。

	权责让渡

迭代让位于高阶函数

递归

闭包:特殊的函数,绑定了函数内部引用的所有变量。在生成的时候,会把引用的变量全部劝导代码块的作用域里,封闭包围起来。常用于绑定常量或是不可变的值。“让语言去管理状态”可以推迟执行

柯里化和函数的部分施用
柯里化:从一个多参数函数变成一连串单参数函数的变换。
部分施用:通过提前代入一部分参数值,使一个多参函数得以省略部分参数,从而转化为一个参数数目较少的函数。

	用巧不用蛮	

缓存。书中用了很大的篇幅去讲如何应用缓存。感觉是每种编程方式都会考虑的问题,而且也没有看出和命令式编程缓存应用的区别主要是在哪里。

	模式与重用

template method
strategy
flyweight
factory

演化的语言

分发
运算符重载
函数式的数据结构
错误处理:either,option

现实应用

java8:函数式接口,optional,stream
其中:optional防止方法的返回结果出现无法区分表示错误的null,和作为有效结果的null

多语言与多范式

函数式与元编程的结合,利用元编程在数据类型之间建立映射

在这里插入图片描述TODO:

  • 理解函数式的缓存
  • 理解闭包代替Command
  • 函数式编程,为什么会强调值不可变
  • 一等公民?除了指函数可以出现在任何地方,还有其他含义么?一等公民是对谁而言呢。

猜你喜欢

转载自blog.csdn.net/u010176014/article/details/85911994