函数式编程思维

函数式编程思维

    1 直观的角度来说,函数式风格的代码可以写得很精简,大大减少了代码的行数,并且思维方式不再是命令式,而是偏向于自然语言.

    2 其次,函数式的代码是“对映射的描述”,函数一词的意思不再是我们程序中的函数,方法,而是数学中的函数映射.

函数式编程特性

  1 数据不可变性(immutable data)多有的变量只可以赋值一次,变量不可变,如果想改变变量就创建一个新的变量。

2 函数是第一公民(first class method)函数可以像普通变量一样去使用。函数可以像变量一样被创建,修改,并当成变量一样传递,返回或是在函数中嵌套函数。

3 引用透明(referential transparency) 指的是函数的运行不依赖于外部变量或“状态”,只依赖于输入的参数,任何时候只要参数相同,调用函数所得到的返回值总是相同的。天然适应并发编程,因为调用函数的结果具有一致性,所以根本不需要加锁,也就不存在死锁的问题。

4 尾递归化(tail call optimization)因为函数调用要压栈保存现场,递归层次过深的话,压栈过多会产生性能问题。所以引入尾递归优化,每次递归时都会重用栈,提升性能。

函数式编程技术(方法论)

  1 映射化简(map & reduce)函数式编程最常见的技术就是对一个集合做Map和Reduce操作。这比起过程式的语言来说,在代码上要更容易阅读。传统过程式的语言需要使用for/while循环,然后在各种变量中把数据倒过来倒过去的

2 管道    (pipeline)把一组函数放到一个数组或是列表中,然后把数据传给这个列表,数据就像一个pipeline一样顺序地被各个函数所操作,最终得到我们想要的结果。他的设哲学就是让每个功能就做一件事,并把这件事做到极致,软件或程序的拼装会变得更为简单和直观。 

3 递归    (recursing)递归最大的好处就简化代码,他可以把一个复杂的问题用很简单的代码描述出来。递归的精髓是描述问题,而这正是函数式编程的精髓。 

4 柯里化  (currying)把一个函数的多个参数分解成多个函数, 然后把函数多层封装起来,每层函数都返回一个函数去接收下一个参数。 

5 高阶函数(higher order function)函数当参数,把传入的函数做一个封装,然后返回这个封装函数。现象上就是函数传进传出


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值