Functional programming 一个口齿不清的文盲的Clojure

Functional programming 一个口齿不清的文盲的Clojure,functional-programming,lisp,clojure,Functional Programming,Lisp,Clojure,我是一个终身面向对象的程序员。我的工作主要是java开发,但我有多种语言的经验。Ruby让我第一次真正体验了函数式编程。我喜欢Ruby从函数范式中借用的特性,比如闭包和continuations。最后,我毕业于斯卡拉大学。这是一个很好的方法,可以逐步学习以功能的方式处理非琐碎的问题 现在我对Clojure感兴趣。我知道所有吸引人的特性(软件事务性内存、宏等),但我就是不习惯“用lisp思考”。我看过Rich Hickey针对java程序员的屏幕广播,但它们旨在解释语言特性,而不是解决实际问题 我

我是一个终身面向对象的程序员。我的工作主要是java开发,但我有多种语言的经验。Ruby让我第一次真正体验了函数式编程。我喜欢Ruby从函数范式中借用的特性,比如闭包和continuations。最后,我毕业于斯卡拉大学。这是一个很好的方法,可以逐步学习以功能的方式处理非琐碎的问题

现在我对Clojure感兴趣。我知道所有吸引人的特性(软件事务性内存、宏等),但我就是不习惯“用lisp思考”。我看过Rich Hickey针对java程序员的屏幕广播,但它们旨在解释语言特性,而不是解决实际问题

我正在寻找任何能让其他人更容易实现这一转变的建议或资源。

对于初学者来说,这会让你像口齿不清的人一样思考。如果你不耐烦了,快一点:-)另一本好书是保罗·格雷厄姆写的,作为奖励,这本书现在在线免费


我不喜欢计算机程序的结构和解释;如果你已经知道Lisp或Scheme,这是一个伟大的智力之旅,非常令人满意,但我和我的学生还没有发现它是一本值得学习的好书。如果你能忍受这个小阴谋家的辩证组织和cutesie pie风格,那么它有很多好信息。我不能。

从OOP直接转到Clojure,我只推荐Stuart Halloway的优秀作品

我喜欢它,而且它在这个过程中覆盖了很多Clojure和相当多的函数编程

《小阴谋家》和《SICP》都很棒,但如果你想学的话,它们与Clojure的关系就不大了

我非常喜欢在youtube上无痛地介绍clojure的一些想法。他们并不认为自己对Lisp或函数式编程语言有很好的了解

就书籍而言,我同意Isaac的观点,即编程Clojure是一种极好的资源。你也可以考虑一些关于Culjule:

的即将出版的书。

如果您现在购买,这两款产品都可以提前在线访问。另外,我认为两者都有折扣——试试看clojure.org

彼得和诺曼提到的口齿不清的书可能是不错的选择(我喜欢SICP,但没有读其他的)。但是,如果您刚刚开始使用Clojure,那么它在语法上的差异可能会有点令人沮丧。因此,我建议从Clojure的特定书籍开始

(编辑以修复链接。)


我对Lisp的第一个介绍是:Peter Norvig的人工智能编程范例。这是一个非常可读和温和的介绍,许多功能的共同Lisp和函数式编程的概念

直接从一些开始可能更适合您,因为Common Lisp和Clojure之间有一些,如果您试图同时学习这两种语言,可能会让您感到困惑

同时,尝试亲身体验如何使用Clojure REPL,做一些练习,然后与其他Clojure和命令式Java解决方案进行对比


此外,如果您对Clojure编程和惯用风格有任何疑问,请与其他Clojure专家讨论您的代码。有几个选项可以做到这一点,例如:、clojure、通过标签的Twitter,当然还有这里

到目前为止,所有的答案都很好。我想补充:

  • 是一个关于如何以功能性、无副作用的方式设计旧式电子游戏的优秀系列。如果你经历了这些,并掌握了如何编写没有副作用的Pac-Man,那么你将在很大程度上引导必要的思维方式,从功能上解决许多/大多数其他问题
  • Halloway’s是对Clojure最好的一般性介绍,并提供了一些关于如何以功能而不是面向对象的方式思考问题的想法,特别是snake游戏示例
  • Seibel’s是从功能上解决实际问题(如构建数据库)的优秀实用指南。虽然是为CL而不是Clojure编写的,Clojure允许可变数据,但这些概念在没有太多修改的情况下得以延续,全文可以从作者的网站上免费在线获取。至少值得一看

我建议您购买MEAP版的Clojure之乐。我有,现在MEAP总共提供了12章。到目前为止,这是我读过的关于编程语言的最好的一本书。这12章足以让你从Clojure开始,一直到一些高级主题。当前的MEAP(经常更新新的章节)与stackoverflow.com和freenode上的#clojure IRC频道相结合,我想你会没事的


虽然我同意编程Clojure是对Clojure的一个很好的介绍,并且做得很好,但我们不能否认,它每周都越来越过时。您必须记住,Clojure编程是为Clojure 1.0编写的。现在,我们正在快速接近Clojure 1.2的发布。例如,随着defrecord的加入,结构将变得过时。

如果您想了解“Lispy思维”的介绍,我建议您。这是一本很好的读物,非常适合来自非lisp背景的经验丰富的程序员


缺点是它针对的是通用的Lisp,而不是Clojure;主要原因是Clojure的方法更实用。你可能也会想要一本专门针对Clojure的书。

在我最初提出这个问题11个月之后。我刚刚开始了一个新项目,帮助初学者过渡到clojure。它被称为4clojure,它挑战您解决填空式交互问题

+1。Halloway's bo