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

Osc*_*Ryz 24 lisp programming-languages functional-programming

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

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

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

圭多错了吗?之后怎么样了?

mik*_*era 23

几乎我所知道的每一个Lisp都可以用来编写一个函数式的程序(毕竟你真正需要的只是一流的函数!)

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

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


Hal*_*ier 9

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

但是,Python和Lisp都不会强制执行纯函数,允许使用可变变量,状态和命令式构造.风格的混合在实践中总是很方便,所以在非常成功的工具中你可能找不到很多概念的例子.

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

  • 事实上,Python和Common Lisp都强制执行命令式编程.两者都不能保证正确的尾递归处理,所以你*必须*使用命令式循环. (5认同)