读书笔记-函数式编程思维


读书《函数式编程思维》(Neal Ford 著) ,对于每天写代码,要不停的花时间去考虑如何避免写重复性代码,如何造轮子的我来说,感觉得到了些启发。目前理解的函数式编程思维,是一种抽象的映射关系,输入和输出之间的映射。应用这样的抽象,让我们不用关注于低层次细节的实现。最直观的感受就是 Scala也太简洁了啊~Java8中的lambda也太好用了啊 ~

函数式编程思维

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

主要内容

	范式转变

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

	权责让渡

迭代让位于高阶函数

递归

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

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

	用巧不用蛮	

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

	模式与重用

template method
strategy
flyweight
factory

演化的语言

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

现实应用

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

多语言与多范式

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

在这里插入图片描述TODO:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值