函数式语言(functional language)一类程序设计语言.是一种非冯·诺伊曼式的程序设计语言.函数式语言主要成分是原始函数、定义函数和函数型.这种语言具有较强的组织数据结构的能力,可以把某一数据结构(如数组)作为单一值处理;可以把函数作为参数,其结果也可为函数,这种定义的函数称为高阶函数.程序就是函数,程序作用在结构型数据上,产生结构型结果,从根本上改变了冯·诺伊曼式语言的"逐词"工作方式。
函数式语言具有简明性和独特的表达能力,因此可用它来研究传统程序设计语言的语义.巴科斯<Backus,J.)分析了传统程序设计语言的缺陷,认为这些缺陷主要是采用冯·诺伊曼式系统结构所造成的。巴科斯提出的函数式程序设计系统FP摆脱了传统的冯·诺伊曼计算机结构,因此,需要一种新型的非冯·诺伊曼式的系统结构为后援。
函数式编程中最古老的例子莫过于1958年被创造出来的Lisp了。函数式编程更加现代一些的例子包括Clean、Clojure、Erlang、Haskell、Miranda、Scheme等。虽然λ演算并非设计来于计算机上运行,但它可以被视作第一个函数式编程语言。1980年代末期,集函数式编程研究成果于大成的Haskell发布。基于JavaScript的某些开发理念强调函数式的实现方法。
函数式编程语言包含以下几类:纯函数式编程语言,非纯函数式编程语言,其他函数式编程语言。纯函数式编程语言包含:强静态类型(Concurrent Clean、Haskell、Miranda),弱类型(Lazy K);非纯函数式编程语言包含:强静态类型(F#、ML、OCaml、Scala),强动态类型(Clojure、Erlang、Lisp、LOGO、Mathematica、R、Scheme),弱类型(Unlambda);其他函数式编程语言包含:(APL语言、XSLT)
函数式编程语言之所以在这两年流行,是因为函数式编程是种编程典范,它将电脑运算视为函数的计算。函数编程语言最重要的基础是 λ 演算(lambda calculus)。而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。和过程化编程相比,函数式编程里,函数的计算可随时调用,所以流行起来。而且它具有以下优点:1.不可变数据。2.强制使用递归。3.高阶函数和闭包。