我正在寻找Lisp(任何方言)为项目提供的具体而独特的功能,与其他主要功能语言相比。
例如,Haskell提供惰性评估,纯度和类型系统,有助于构建更正确的程序。通过使用专门的消息传递,轻量级进程等,Erlang使并发编程更容易。
LISP带来了什么?是什么让它成为某些项目比其他语言更好的套件?它的其他语言缺少什么才能使其适合?
我不是在抨击Lisp;我想了解更多关于它的信息以及它今天使用时提供的优势。请具体说明:)
答案 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 macros和continuations。我不确定其他fp语言还提供这些功能。