Clojure 想学 Lisp,应该从哪个版本入手呢?

zuozuo · 2013年05月28日 · 最后由 edgar_wang_cn 回复于 2015年04月07日 · 13940 次阅读

看到 Lisp 有很多版本,什么 Common Lisp,Scheme,还有 Clojure 等等,学习哪个比较好呢?

那两个不了解,就感觉 clojure 很难

從 The Little Schemer 入手。網上可搜到免費的 PDF。

先学 scheme 熟悉语法,很快就能入门,然后建议学习 common lisp,可以装个 sbcl+slime

先自己写个解释器吧...

#4 楼 @bhuztez 能具体说明一下为什么要先写一个解释器,还有通过哪些途径去获取自己写解释器的资料吗

google 帮到你

- -。用 Lisp 写 Lisp 的解释器还是比较简单的

我觉得从 Scheme 入手,如果你能把 SICP 上所有的练习题都过一遍,差不多要一年吧,然后你就已经知道后面应该学习哪个了。(虽然 1 年时间是估算,但是其实大部分人都坚持不下来)

#8 楼 @lgn21st 表示一周足以。。

坚持不下来了...

至少要对这三个语言有一定了解:

  1. Common Lisp。ANSI 标准,还有很多库,是用途最广的 Lisp。实现的话,楼上说的 SBCL(Steel Bank Common Lisp)蛮不错的,我之前用的是 CLISP 和 GCL(好久没写 CL 了)。

  2. Scheme。简单而优雅,自带的函数很少,但也很强大,我个人推荐 Guile 实现。我和 Guile 的维护者 Ludovic Courtès 聊过,他是个非常优秀的开发者。

  3. Emacs Lisp。自带很多处理文本、缓冲区、命令循环、键绑定等很有用的功能。即使你不用 Emacs,Emacs Lisp 也是一门很值得学习的语言,你可以用emacs --scriptemacs --batch来执行程序。实现的话,还是用 GNU Emacs 吧,其他的 implementation 也都大同小异。

$ cat > hello-world <<EOF
":"; exec ${EMACS-emacs} --script $0 "$@" 2>&1
(message "hello world!")
EOF
$ chmod +x hello-world
# install hello-world /usr/local/bin

用户不需要知道程序/usr/local/bin/hello-world是用什么语言写的。而且 Emacs Lisp 不只是在 Emacsen 家族里可以用,Sawfish 也是可以的。

除此之外,newLISP、Clojure、Arc、Nu、ISLISP 都是些值得了解的方言。我个人对 Clojure 不是很感兴趣(不过也不讨厌),感觉 Clojure 里很多 “微创新” 都是没有必要的。

#4 楼 @bhuztez 用什么语言写? #7 楼 @edgar_wang_cn lisp 语言这么复杂,是实现 lisp 部分解释器,还是完全重新实现呢? #12 楼 @xuefuqiao emacs lisp 和 lisp, clojure, racket 语法差异非常大么? #1 楼 @cgyy 你为啥学 clojure 啊?想用它干啥?

#12 楼 @xuefuqiao Emacs Lisp 还可以在哪些地方使用呢?

#13 楼 @lips 只是实现基本的功能而已,你如果想把标准里的东西都实现就得耗费不少时间了。

#15 楼 @edgar_wang_cn 实现哪些基本功能呢? 用 lisp 可以做 js 语言的解析器么?要多久能实现?

@lips 你可以看看《The Little Schemer》。lisp 实现 js 解析器自然是可以的,但是要多久我也不知道,没有弄过。

#17 楼 @edgar_wang_cn 从 little schemer 开始,比从 emacs lisp 开始要好么?

@lips the little schemer 是一本非常简单的 scheme 入门书,你可以很快就看完它,了解一些 lisp 中比较通用的概念和操作。如果你学习 lisp 是为了配置 emacs,那么可以直接去学 emacs lisp,如果不是的话,我个人还是比较推荐 racket 或 typed racket 。

#19 楼 @edgar_wang_cn 暂时是想配置 emacs,你学 Lisp 的目的是什么? Racket 是 lisp 方言,但是和 common lisp 及 emacs lisp 的差别大么?

#19 楼 @edgar_wang_cn 亲现在主要搞 Ruby 开发么?

@lips 主要还是读 SICP 的时候顺带学了点。各有特色吧,具体区别你可以搜索一下。racket 简单易学,common lisp 提供了 OOP 方面的支持。我现在在做 Java 开发。

24 楼 已删除

#22 楼 @edgar_wang_cn 学 lisp 对你现在写 java 有帮助么?你怎么啥都搞啊,哈哈 现在 java 是老婆,ruby 是情人,lisp 是初恋么?哈哈

@lips 有没有帮助我也说不清。。。我折腾过的语言比较多,不过一开始我也是学 C 的。

#25 楼 @edgar_wang_cn 你现在还用 emacs 么?

#26 楼 @lips - -。我一直都是用 Vim 的,偶尔会用用 emacs 的 org-mode

#27 楼 @edgar_wang_cn 为何不以 emacs 为主呢?

#28 楼 @lips 因为习惯了 Vim,配置什么的也更熟悉一点。

#29 楼 @edgar_wang_cn 不折腾 vim 了? 用 vim 写 java 么?

#30 楼 @lips 写 Java 自然是用 IDEA ,不然太痛苦。

#31 楼 @edgar_wang_cn 为啥不是 eclipse?

#32 楼 @lips 呃,个人喜好吧。。。

#35 楼 @edgar_wang_cn 比专业版功能少一些?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号