Max—— 前端攻城狮 's Blog

A Simple pure blog generated by jekyll

函数式编程语言

<< Back

函数式编程语言

什么是函数式编程

什么是函数式编程(functional programming)呢?如果你这么直白地询问,会发现它竟是一个不太容易解释的概念。许多在程序设计领域有着多年经验的老手,也无法很明白地说清楚函数式编程到底在研究些什么。

在很多的编程的学习资料或者课堂上,我们常常会听到老师会这样讲解编程语言就是一系列的计算机能够识别或者经过一些规则能够转化为计算机可以识别的指令集,然后由这样的编程语言编写出计算机程序。

在这些由编程语言编写出的程序中,一个常见的场景就是:将数据传入函数,然后产生结果。

类似这样:datafunctionresult

如果用代码来表示大概是这样的一个过程:

	start
function add(a,b)
return a+b
end
	

这个过程可以表示为:function(data)data指函数接受数据,处理最后输出数据作为计算结果的全部过程。

然而,在典型的函数式语言眼中,好像不是这么一回事儿,我们来看看一个同样的场景:function(function)function这个过程中,函数接受另外一个函数作为参数,运算,最后在输出一个函数作为计算结果。可以这么理解:在函数式编程语言的世界里,根本就没有数字,对象等等这么东西(数据类型)或者这样的概念,只有一切皆是函数的概念。

举例说明:现在有这样一个数学表达式

	(1 + 2) * 3 - 4
	

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

	var a = 1 + 2;
var b = a * 3;
var c = b - 4;
	

函数式编程要求使用函数,我们可以把运算过程定义为不同的函数,然后写成下面这样:

	function add(add1,add2){
	return add1 + add2;
};
function multiply(mul1,mul2){
	return mul1 * mul2;
};
function subtract(sub1,sub2){
	return sub1 - sub2;
};
var result = subtract(multiply(add(1,2), 3), 4);
	

所以看出函数式语言主要思想是:把运算过程尽量写成一系列嵌套的函数调用。它从一开始就采取了与多数语言完全不同的世界观,这也是使用对象语言时间久了以后,难以接受函数语言的原因,万物皆对象,很好理解;但是万物皆函数,却难以理解。

最后牢记:函数式编程不是用函数来编程!!!

参考阮一峰老师的函数式编程初探

发表于: 26 Jul 2012