Iva*_*van 7 lisp functional-programming
在过去,LISP是唯一强大的函数式编程语言,据我所知.现在有很多,为什么人们仍然使用其奇怪的语法LISP?是否有一种独特的杀手特征?
Vat*_*ine 11
首先,Lisp,特别是Common Lisp更像是"多范式"而不是"功能".从这开始,我将主要讨论Common Lisp(CL).
但是,没有"一个杀手级特征".CL是一种可编程编程语言,可以轻松进行元编程.也就是说,您通常可以直接在语言中执行"元级"操作,而不必使用预处理器来进行基本语言的文本转换.
CL还有一个非常强大的对象子系统(CLOS),到目前为止,它支持我想用类层次结构和/或方法做的任何事情.
就语法而言,我猜它与"Algol系列"语言的更经典语法略有不同,但它并不比APL更奇怪.
有一个独特的杀手功能.它被称为宏观系统.使用宏,您可以扩展您的语言,这使得制作出色的DSL非常容易.使用Scala,Erlang或Haskell实现这种事情会很困难(并不是那么好).
语法或缺乏它是很多lispers真正喜欢的,因为它带来了很好的统一性,这是很多语言所缺乏的.对于标准的C或Java程序员来说,Erlang或Haskell的语法也很奇怪,所以语法更糟糕的是它看起来很奇怪.
你应该回答的另一个问题是为什么其他语言比Lisp更好,Lisp缺少什么功能?
但当然,许多现代语言从Lisp中学到了很多东西,并且还有更多的语言可以用于同一个问题.
不要忘记Lisp不是一种语言,有不同种类的Lisp方言.Scheme,Common Lisp或Clojure都有不同的侧重点.
所以,使用什么语言的问题只能通过尝试来解决,每个语言都有一些非常特殊的东西.Erlang与Actors,Haskell和Scala有这些疯狂的类型系统,Lisps有很棒的宏系统......