WEB开发网
开发学院网页设计JavaScript 函数式编程(javascirpt) 阅读

函数式编程(javascirpt)

 2010-09-14 13:44:24 来源:WEB开发网   
核心提示:前言Javascript,有人称其为C+LISP,C只怕是尽人皆知,函数式编程(javascirpt),但是一直活跃在人工智能领域的另一个古老而优美的语言LISP,掌握的恐怕不是很多.这个倒不是因为这个语言太难或者用途不广泛,当然这个不是最主要的,在函数式编程中最主要的是函数可以做为一个基本类型被返回,而是大多数人在接

前言

Javascript,有人称其为C+LISP,C只怕是尽人皆知,但是一直活跃在人工智能领域的另一个古老而优美的语言LISP,掌握的恐怕不是很多.这个倒不是因为这个语言太难或者用途不广泛,而是大多数人在接受计算机语言启蒙的时候都走的是图灵机模式,而LISP,做为一种函数式编程语言,是另一个体系:lambda演算体系.这个体系的运算能力跟图灵机的运算能力是相当的。

所以Javascript本身是一种很自由的,支持函数式编程的一个神奇的语言,在WEB中的应用只是它的以个小小的部分。脚本可以用来脚本化很多东西,最主要的应用是在UI层面,很灵活(这也是Javascript用来脚本化HTML的一个重要原因)。我们这里要说的是一个100%java实现的 javascript引擎rhino,当然重点不是引擎本身,而是在其上解释JavaScript的函数式编程。(rhino可以在此处 http://www.mozilla.org/rhino/找到)。

函数式编程概览

我们先看几个例子,从感官上对其有一个了解,看一个幂计算函数,用命令式语言书写(命令式语言如C,Java等),大概就是下面这个样子:

function expt(b, n){
    if(n == 0){return 1;}
    else{
        return expt(b, n-1)*b;//正常的递归调用
    }
}

再看看函数式编程的写法:

function expt(b, n){
    if(n == 0){
        return 1;
    }else{
        return mul(expt(b, dec(n)), b);//所有操作均为函数
    }
}

可以很明显的看到,有一大堆的括号,没有操作符(如+-*/等),这是因为,操作符在函数式编程中被认为是函数,与其他函数(数学函数,串处理函数等)的地位是同等的,当然这个不是最主要的,在函数式编程中最主要的是函数可以做为一个基本类型被返回,这一点时命令式语言无法完成的。

1 2 3 4 5  下一页

Tags:函数 编程 javascirpt

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接