函数式语言

许多现存的编程语言都可基于其计算模型加以分类,归入某些语言族,或者属于某种编程范式。

按照不同的规则,可以有多种分类的方法。

 

函数式(functional)语言采用一种基于函数的递归定义的计算模型。他们的灵感来自于lambda 演算。

本质上,程序被看作是一种从输入到输出的函数,基于一些更简单的函数,通过一种逐步精化的过程定义。

函数式语言语言进行计算的主要方式是将函数作用于给定参数之上的。

在函数式语言的程序设计中可以没有命令式语言所必需的那种变量,可以没有赋值语句,也可以没有循环。纯函数式语言是没有副作用的。

从某种程序上,函数式语言代表了对计算机的一种数学模型(lambda 演算)的实现。Lisp是第一个函数式语言,但并不是纯函数式语言。

典型的函数式语言有F#、ML和Haskell。

 

 

需要注意的是,一个编程语言属于某种类型,并不代表这个语言只能用那种思想编程。

比如C语言,虽然是过程式,但我们仍然可以利用struct抽象出class的概念,用函数指针和算法模拟面向对象里的多态特征,只是会非常麻烦。

非典型函数式语言也可以函数式编程functional program 如js

而多范式语言则可以在它所支持的这些范式之间自由切换,不会有勉强的生涩感。当然,代价就是多范式语言一般相对复杂一些。



posted @ 2019-02-28 13:35  liit  阅读(115)  评论(0编辑  收藏  举报