为什么选择Lisp作为项目?

时间:2012-02-15 00:31:24

标签: functional-programming lisp

我正在寻找Lisp(任何方言)为项目提供的具体而独特的功能,与其他主要功能语言相比。

例如,Haskell提供惰性评估,纯度和类型系统,有助于构建更正确的程序。通过使用专门的消息传递,轻量级进程等,Erlang使并发编程更容易。

LISP带来了什么?是什么让它成为某些项目比其他语言更好的套件?它的其他语言缺少什么才能使其适合?

我不是在抨击Lisp;我想了解更多关于它的信息以及它今天使用时提供的优势。请具体说明:)

3 个答案:

答案 0 :(得分:1)

当我问自己类似于你的自我问题时,我搜索并找到了这篇文章:

它没有太多细节,但给出了为什么Lisp有意义的粗略画面。我发现它非常有用(以及整个http://www.defmacro.org/网站 - 就像那里的帖子很多,例如this one)。

答案 1 :(得分:1)

  

Haskell提供懒惰评估

Clojure序列函数是懒惰的。您可以使用无限列表,就像在haskell中一样:

(take 10 (cycle ["odd" "even"]))
  纯度

Clojure类型是不可变的。这使你的程序的大部分变得纯粹,而不会强迫你爬上象牙塔:)加上它有STM,就像haskell一样。

  

和类型系统

不幸的是,这里的lisps无法与haskell竞争。大多数人都是动态的。

但是lisps及其VM(图像)的动态特性使它们成为服务器端程序(如Web应用程序)的一个很棒的选择。连接到Web应用程序的运行实例非常容易,并且可以动态更改功能甚至整个模块,而无需重新启动应用程序或踢出用户。这对于哈斯克尔来说是不可能的,也可能是非常麻烦的。

大多数lisps提供了一种非常简单的编写宏的方法。你用相同的语言编写宏。

使用Haskell,您将不得不学习另一种语言(模板Haskell),这种语言要复杂得多,而且到目前为止还没有正确记录。你将很难学习它。

话虽如此,我使用并喜欢lisp(clojure)和haskell。我更喜欢haskell,因为它拥有实用开发语言中最强大的类型系统。

另外,它比蘑菇更能让你的思绪更好:)

答案 2 :(得分:0)

Scheme提供hygenic macroscontinuations。我不确定其他fp语言还提供这些功能。