为什么今天使用LISP,有Scala,Erlang,Haskell等

Iva*_*van 7 lisp functional-programming

在过去,LISP是唯一强大的函数式编程语言,据我所知.现在有很多,为什么人们仍然使用其奇怪的语法LISP?是否有一种独特的杀手特征?

Vat*_*ine 11

首先,Lisp,特别是Common Lisp更像是"多范式"而不是"功能".从这开始,我将主要讨论Common Lisp(CL).

但是,没有"一个杀手级特征".CL是一种可编程编程语言,可以轻松进行元编程.也就是说,您通常可以直接在语言中执行"元级"操作,而不必使用预处理器来进行基本语言的文本转换.

CL还有一个非常强大的对象子系统(CLOS),到目前为止,它支持我想用类层次结构和/或方法做的任何事情.

就语法而言,我猜它与"Algol系列"语言的更经典语法略有不同,但它并不比APL更奇怪.


nic*_*kik 8

有一个独特的杀手功能.它被称为宏观系统.使用宏,您可以扩展您的语言,这使得制作出色的DSL非常容易.使用Scala,Erlang或Haskell实现这种事情会很困难(并不是那么好).

语法或缺乏它是很多lispers真正喜欢的,因为它带来了很好的统一性,这是很多语言所缺乏的.对于标准的C或Java程序员来说,Erlang或Haskell的语法也很奇怪,所以语法更糟糕的是它看起来很奇怪.

你应该回答的另一个问题是为什么其他语言比Lisp更好,Lisp缺少什么功能?

但当然,许多现代语言从Lisp中学到了很多东西,并且还有更多的语言可以用于同一个问题.

不要忘记Lisp不是一种语言,有不同种类的Lisp方言.Scheme,Common Lisp或Clojure都有不同的侧重点.

所以,使用什么语言的问题只能通过尝试来解决,每个语言都有一些非常特殊的东西.Erlang与Actors,Haskell和Scala有这些疯狂的类型系统,Lisps有很棒的宏系统......