函数式编程初探

做者: 阮一峰 javascript

日期: 2012年4月 6日 html


诞生50多年以后,函数式编程(functional programming)开始得到愈来愈多的关注。 java


不只最古老的函数式语言Lisp重获青春,并且新的函数式语言层出不穷,好比Erlang、clojure、Scala、F#等等。目前最当红的Python、Ruby、Javascript,对函数式编程的支持都很强,就连老牌的面向对象的Java、面向过程的PHP,都忙不迭地加入对匿名函数的支持。愈来愈多的迹象代表,函数式编程已经再也不是学术界的最爱,开始大踏步地在业界投入实用。 程序员


也许继"面向对象编程"以后,"函数式编程"会成为下一个编程的主流范式(paradigm)。将来的程序员恐怕或多或少都必须懂一点。 编程

可是,"函数式编程"看上去比较难,缺少通俗的入门教程,各类介绍文章都充斥着数学符号和专用术语,让人读了如坠云雾。就连最基本的问题"什么是函数式编程",网上都搜不到易懂的回答。 函数式编程


下面是个人"函数式编程"学习笔记,分享出来,与你们一块儿探讨。内容不涉及数学(我也不懂Lambda Calculus),也不涉及高级特性(好比lazy evaluationcurrying),只求尽可能简单通俗地整理和表达,我如今所理解的"函数式编程"以及它的意义。 函数



我主要参了Slava Akhmechet的"Functional Programming For The Rest of Us"学习


1、定义 lua

简单说,"函数式编程"是一种"编程范 spa

式"(programming paradigm),也就是如何编写程序的方法论。

它属于"结构化编程"的一种,主要思想是把运算过程尽可能写成一系列嵌套的函数调用。举例来讲,如今有这样一个数学表达式:

  (1 + 2) * 3 - 4

传统的过程式编程,可能这样写:

  var a = 1 + 2;

  var b = a * 3;

  var c = b - 4;

函数式编程要求使用函数,咱们能够把运算过程定义为不一样的函数,而后写成下面这样:

  var result = subtract(multiply(add(1,2), 3), 4);

这就是函数式编程。


2、特色

函数式编程具备五个鲜明的特色。

1. 函数是"第一等公民"

所谓"第一等公民"(first class),指的是函数与其余数据类型同样,处于平等地位,能够赋值给其余变量,也能够做为参数,传入另外一个函数,或者做为别的函数的返回值。

举例来讲,下面代码中的print变量就是一个函数,能够做为另外一个函数的参数。

  var print = function(i){ console.log(i);};   [1,2,3].forEach(print);

相关文章
相关标签/搜索