函数式编程
arminzheng Lv2

鲜明的特点

  • 函数是一等公民,地位与变量同一地位;

  • 只用表达式,不用语句;语句代表执行某种操作,没有返回值,比如I/O操作;
    从一开始就是为了处理运算(computation),不考虑I/O,实际情况是尽可能限制到最小,保持计算过程的单纯性;

  • 没有副作用;保持独立,所有功能就是返回一个新的值,没有其他行为,尤其修改外部变量;

  • 不修改状态;这意味着状态不能保存在变量中,函数式编程使用递归保存状态。缺点是运行速度比较慢;

  • 引用透明;不依赖外部变量,只依赖输入参数,任何时候参数相同,返回值总是相同的;利于观察和理解的行为;

意义

  • 代码简洁,开发快速;
  • 接近自然语言,易于理解;
  • 不依赖,更方便的代码管理;
  • 易于并发编程(concurrency)互不干扰;
  • 代码的热升级;