Clojure是一种积极发展的现代Lisp方言.它基于JVM,因此所有Java库都可立即使用,因此也支持Unicode.
这是一种替代方案,而不是One True Answer.
Clojure是一种积极发展的现代Lisp方言.它基于JVM,因此所有Java库都可立即使用,因此也支持Unicode.
这是一种替代方案,而不是One True Answer.
如果你想避免火焰战争,你喜欢图书馆与Clojure.它很小,很快,社区很有帮助,也没有教条.这是Lisp减去20世纪80年代荒谬的事情.它有一个BDFL,如果你有一个好主意,它很有可能会被实现到语言中.
我玩弄了Common Lisp,这是一件很美好的事情.我在DrScheme完成了SICP的前三章和Metacircular Evaluator,这也很美妙.当然,通过学习这些,你将从中受益匪浅.
但是,随着时间的推移,我已经开始认真地掌握小语言了.我不会撒谎,我喜欢Javascript而且我喜欢C(并且如果每种语言都没有C核心那就是该死的),因为它们很小.
Clojure很小.很优雅.它是我们这个时代的语言.
只需选一个,然后学习它.当你弄清楚差异时,如果你第一次选择不好,你就可以再次选择.
Clojure是LISP的一种很好的方言,可以促进函数式编程.它在JVM上运行,因此您可以访问可能习惯使用的任何Java库.该网站提供了很好的文档和截屏视频,可以帮助您学习.另一个优点是,与许多其他方言不同,它的安装非常简单.
如果您只是想要了解Emacs(EmacsLISP)的概念是另一种选择.它附带了令人难以置信的文档,教程和大量代码示例.截屏也很容易找到.Emacs的一大好处是编辑器是用LISP编写的,因此编辑器自然可以很好地支持LISP的运行,编辑和调试.此外,您可以扩展编辑器,以便在学习LISP 时使您的日常文本编辑需求变得更加容易.
Contra Chuck,Common Lisp的一个优点是它有一个标准,实现坚持并努力,这样你就可以在很大程度上利用SBCL(具有出色的类型检查和推理)进行开发,然后说,部署为可执行链接的可执行文件C库(使用ECL或其他)或作为.jar使用Java库(使用ABCL),或使用Mac或Windows本机GUI(Clozure,两者).Common Lisp在架构和实现之间以及随着时间的推移具有惊人的可移植性,并且Common Lispers在语言的支持下努力保持这种方式.举例说明,非标准化行为的一个愚蠢背离是"这是一个特殊变量吗?"的问题.所以我在我使用的实现中回答了它:
#-abcl (defun special-variable-p (symbol) #+ecl(si:specialp symbol) #+ccl(proclaimed-special-p symbol) #+sbcl(equal '(:special t) (multiple-value-list-int:info :variable :kind symbol)))
在读取时,ABCL(它已经有了),(defun special-variable-p (symbol) (si:specialp symbol))
ECL等等都没有减少.所以我可以将它放在我的.rc文件中并使用REPL中的common函数.但这不是很重要:这不是线程或各种支持的网络或通信顺序进程库.最后一个例子只有一个#+sbcl/#-sbcl
,因为它运行在五个实现上.因为它依赖于经过精心移植的代码.
但是允许这种(和其他)优势的东西也给学习者带来了挑战:Common Lisp是一种非常大的语言.这不是你可以在一两个星期内啜饮的东西,就像我做过Clojure一样(但是我的Clojure已经随着突破性的变化而衰退了 - 这种语言尽管很重,但它有自己的优点,提醒我的对比是我喜欢Common Lisp的很多东西.)所以你应该阅读很多这个页面,并且让HyperSpec成为一个按键(对我来说,M-x hyperspec RET do-symbols RET
已经足够接近圣经了.),并考虑购买几本书.我有Practical Common Lisp,刚刚获得Let Over Lambda,现在很快就会买到PAIP.
但是,即使Common Lisp是真正的答案,你也不会完全浪费你的时间来"挑选"一些看似浮华的替代方案( - '欺骗',因为普通的CL并没有向你展示它的宏可以做的所有事情,而且它比任何人都有更多种类的宏.通常的比较是在坏的CL和语法优化的替代X之间.你仍然可以学习基础知识,你仍然可以使用SICP,On Lisp,The Little Schemer等中的大部分内容.一个lisp,即使是错误的lisp,仍然比非lisp更好.(但是你会花一些时间来实现正确的口齿不清的部分,糟糕的是,在错误的口齿不清的情况下.Meta-Greenspun.)
Lisp最大的问题是每个人都不会坚持不懈的标准.你不必只需要在Common Lisp和Scheme之间选择; 你必须在Common Lisp的几个不兼容的实现和几个不兼容的Scheme实现之间进行选择,以及其他一些像Arc和Clojure这样的小东西.
我建议从MzScheme开始.它很受欢迎,它是积极开发的,它有许多库提供现代编程环境的功能,而Scheme比Common Lisp更简单(更好,更简单).
了解elisp,以便扩展Emacs.
和Clojure一起去吧.它是一种令人惊叹的语言,可以完全访问任何Java库.它已经开发了超过2年,已经有3个IDE插件正在开发中,并且在4月份出版了一本关于它的书.它非常快,非常优雅和美丽.你不能错过Clojure.
对我来说,Scheme的基础理论更有说服力.到目前为止,PLTScheme是我发现的最活跃的LISP.不幸的是,它的打字数量激增,掩盖了Lisp的美丽.
我很想看到像arc这样的东西成功,但似乎不太可能.