Lisp不是函数式编程语言吗?

时间:2011-05-16 18:23:24

标签: programming-languages functional-programming lisp

我在书中读到:“编程的主人”,与Guido Van Rossum的访谈说:

  

Python与Lisp共享的基本属性(也不是函数式语言!)是函数是一流的对象 ......

那么,Lisp 不是一种函数式编程语言?

Guido错了吗?那是什么?

2 个答案:

答案 0 :(得分:23)

我所知道的每一个Lisp都可以用来编写功能样式(毕竟你真正需要的只是一流的功能!)

然而,Lisps更像是多语言工具包:你可以进行函数式编程,OOP,逻辑编程,为一些糟糕的新范例定义你自己的DSL等。

可能最接近函数编程风格的Lisp是Clojure(它具有惰性评估,不鼓励OOP,始终使用不可变数据结构,限制不受控制的突变(通过STM),具有相当多的纯/高阶函数核心库等。)

答案 1 :(得分:8)

有些语言允许并鼓励函数式编程范例。 Python和Lisp都属于这些。 Lisp尤其是第一个应用从lambda演算得到的理论概念的人。在20世纪50年代后期,当几乎只有FORTRAN和Lisp存在时,Lisp被强调为功能性的,其中FORTRAN具有完全静态的内存管理,永远不会被认为是功能性的。

然而,Python和Lisp 都没有强制执行纯功能,允许可变变量,状态和命令式构造。样式的混合在实践中总是很方便,所以在非常成功的工具中你可能找不到很多概念的例子。

在纯函数式语言中,Haskell,Clean和Miranda是列举的例子,但我不能对它们说些什么。