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

时间:2010-09-16 10:12:07

标签: functional-programming lisp

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

2 个答案:

答案 0 :(得分:11)

首先,一般来说,Lisp和Common Lisp更像是“多范式”而不是“功能”。从这开始,我将主要讨论Common Lisp(CL)。

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

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

就语法而言,我认为它与“Algol系列”语言的更经典语法略有不同,但它不会比APL更奇怪。

答案 1 :(得分:8)

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

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

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

但是当然很多现代语言都是从Lisp中学到很多东西的,并且还有更多的语言可以用于同样的问题。

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

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