LISP或Haskell

6

我需要学习函数式编程,不知道该选择LISP还是Haskell。但是我听说LISP很古老了,你有什么建议吗?


1
Lisp不是真正的函数式语言,因为一切都是列表,所以“函数”实际上是对象,而不是代码块。 - ApproachingDarknessFish
5个回答

14

为了 echo 其他人的建议,我会推荐你学习 Scheme(一种更加函数式的 Lisp 方言)和 Haskell。Scheme / Lisp 教会你“代码即数据 / 数据即代码”和宏等实用技巧。Scheme 鼓励好的函数式风格,我建议你从《The Little Schemer》系列书籍开始入手。SICP 是一本很棒的书 http://mitpress.mit.edu/sicp/full-text/book/book.html ,也可能是有史以来关于编程最好的书之一。作为第一门函数式语言,Scheme 更容易上手。

一旦你掌握了 Scheme,你可能会对缺乏库、缺乏并行性以及小而精的社区感到沮丧。这就是我学习 Haskell 时的情况。Haskell 非常成熟、非常有用和非常函数式化,在掌握基础后学习起来颇具挑战性,因此在另一门函数式语言中打好基础将会帮助你很多。你不会后悔学习任何一个(或两个)。


6
为什么不两者都试试?LISP非常容易学习(我会选择Scheme方言-请参见http://racket-lang.org),所以我建议从这个开始。如果你喜欢它,就坚持下去,但我也建议尝试Haskell,虽然(根据我的经验)理解起来要困难得多。
现在的好处是计算机语言都可以免费使用,除了你的时间。在我开始编程时,LISP只能在大型机上使用,这使得学习变得更加困难。

3

Haskell是一门很好的编程语言,一旦学会了Haskell,你就会爱上它。然后,你就能够学习Common LISP。但是,如果你使用的编辑器是Emacs,那么最好从Lisp开始。


1
我认为Haskell和Common Lisp之间没有共同点。一方面,你有参数性,它极大地限制了你所能做的事情,但是作为回报,你获得了自由定理——“自由”就像“自由群”或者甚至是“免费啤酒”,而不是“言论自由”。另一方面,你有绝对的自由去做任何你想做的事情,但是你放弃了能够以自动化的方式验证你所做的事情是否有意义的能力。 - isekaijin

1
如果你想通过实现一种语言的编译器或解释器来学习函数式编程,那么Lisp或ML应该是更好的第一选择,因为它们比惰性语言更容易实现。否则最好学习两者。

0

基于年龄选择编程语言是愚蠢的,Haskell比如C#存在的时间更长,其历史也更为悠久。无论如何,我建议最终都要学习这两种语言,对于学习函数式编程来说,Haskell专注于纯函数式编程(在多个意义上),而Scheme则是Lisp的一个函数式导向后代。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接