clojure - 从 Lisp 学习 Clojure

标签 clojure jvm jvm-languages

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

2年前关闭。




Improve this question




我正在认真考虑让 Clojure 成为我的新黑客语言,因为我喜欢 Lisp,但在 CL 和 Scheme 方面有一些问题。我以前从未在 Java 环境中工作过,我的 lisp 经验仅限于通过“SICP”和“The Little Schemer”工作。

我需要知道什么?是否有关于“The Clojure 方式”的好资源?关于 Clojure 风格的任何资源?我找到了 Mark Volkmann 的精彩页面,但我浏览过的书似乎有点多余。

另外,关于Java,我需要了解什么?我宁愿不学习 Java 只是为了学习 Clojure,但我想我至少需要知道一点。另外,工作流程是什么样的?我的经验仅限于动态语言,所以我不知道我必须做什么才能在 JVM 上分发没有源代码的应用程序。

我显然已经用谷歌搜索了这个,但是有大量的信息,而不是很多“clojure特定”的东西。

我想我正在寻找一些关于我应该以某种逻辑顺序阅读的文献类型的明智建议。

最佳答案

观看许多 Clojure videos on Blip.tv 不会出错尽你所能,尤其是 Rich Hickey 本人的那些。这些确实有助于深入了解 Clojure 独有的概念点和方面。

如果您对 Lisp 概念足够熟悉,您可能希望最初专注于学习 Clojure 如何“映射”到您使用过的 Lisp。在 "Clojure for Lisp Programmers." 上观看 Rich Hickey 的视频

您确实需要对 Java 有一定的了解,因为 Clojure 不会回避使用它。在它聪明的地方使用 Java 并不是不符合 Clojurey(据我所知)。我至少会浏览一下 API docsjava.langjava.io包,因为 java.lang在您的 Clojure 程序和 java.io 中自动可用经常使用。

考虑到我的 Clojure-to-Lisp 字典和我的 Java 基础知识,我会选择 一个小项目 .将 Clojure 和 Clojure-contrib API 文档放在手边(在 Web 上或使用 REPL 中的 (doc) 命令),并仔细阅读大量 Clojure 博客。我最喜欢的两个是 http://nakkaya.com/http://stuartsierra.com/ .如果你使用 Diigo,一大堆博客已被收藏到 clojure group .

注意:不要沉迷于您的开发环境。 Getting Started wiki page 上列出了许多选项。 .为了学习 Clojure 和您的第一个小项目,我只会选择您选择的纯文本编辑器,学习和使用 Leiningen 的基础知识。要获得一个很好的项目目录设置,并处理所有路径和依赖项,然后使用命令“lein repl”启动一个 REPL,其中所有依赖项都已加载并可用。假设您使用 Emacs(基于您之前的 Lisp 经验),您可以 describe-variable您的 inferior-lisp-program成为 lein repl ,只需从示例项目的根目录启动 Emacs,一切都会自动运行。

书籍 您可以阅读,特别是 The Joy of Clojure、Programming Clojure 和 Practical Clojure。后两个比第一个更“实用”,后者更“哲学”(请原谅粗略的概括)。 Practical Clojure 是 Clojure 1.2 的最新版本,而 Programming Clojure 则有点旧。

最后,进入#clojure IRC channel 并使用 Clojure Google 小组,因为这里有一群聪明、友好的人,他们喜欢帮助他人。

关于clojure - 从 Lisp 学习 Clojure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4764231/

相关文章:

postgresql - 在字符串中实现每个查询的结果

clojure - 循环移位嵌套向量

java - 您打算在什么项目上使用 Scala 编程语言?

java - 隐藏 Java 代理注入(inject)到 JVM 中

java - 如果我用javac编译java我需要JVM吗?

java - Java平台的投资数据

java - 有没有类似 Java 的 VirtualEnv 之类的东西?

clojure - 提醒黎曼?

clojure - 如何查找与给定 namespace 关联的文件?

java - 在不同文件系统之间复制目录内容的干净方法?