clojure - 在开始 REPL 之前拥有一个 Clojure 项目有什么好处?为什么 Cider 不断地询问和提醒用户呢?

我正在使用 Emacs,每次使用 cider-jack-in 启动 Clojure REPL 时,迷你缓冲区都会回显以下内容:

您确定要在没有 Clojure 项目的情况下运行 `cider-jack-in' 吗? (是或否)

我之前有使用 Common Lisp 和 Slime 的经验。在另一个 lisp 生态系统中,没有这样的事情。您只需启动 Common Lisp 而无需提出任何问题。

我没有从 Cider 得到这条消息的目的。可能,因为我错过了一些东西。

重要的是要强调我确实知道如何使用 lein 命令创建一个 Clojure 项目。我只是不明白它的相关性。

在开始 REPL 之前不使用 Clojure 项目我错过了什么?为什么它如此相关?

使用 .clj 文件、REPL 开发一个 Clojure 程序、进行一些交互式编程以及随着程序版本的发展而重新编译的缺点是什么?

只是防止命名空间出现问题?

谢谢

回答1

使用“项目”的主要原因,无论是通过 deps.edn 文件(对于 Clojure CLI 工具)还是 project.clj 文件(对于 lein),都是为了提供依赖关系,从而提供 CLASSPATH。由于 Clojure 在 JVM 上运行,因此必须在 Java 进程启动之前设置 CLASSPATH。顺便说一句,这并不完全正确,但我现在将忽略这种复杂性。 JVM 使用 CLASSPATH 在运行时查找并加载类。

如果您不使用任何依赖项,那么您可能可以不使用项目而侥幸逃脱。

我自己使用带有 cider 的 emacs 和 Clojure CLI 工具。您可能还想查看 inf-clojure emacs 包。

回答2

我也是从 Common Lisp 到 Clojure 的,一开始很困惑。

我们使用 lein new 因为 BraveClojure 等显示这是唯一的方法。尽管它是真实的,但它太旧了。 Clojure 社区应该编写更多最新的date 教程和书籍。

有例如boot - lein 之外的其他构建工具:https://github.com/boot-clj/boot

简短介绍:https://jjmojojjmojo.github.io/boot-getting-started-with-clojure-in-10-minutes.html

这允许您使用 $ boot repl 启动一个 repl,一个使用 boot.user 作为命名空间的 repl,类似于 CLUSER

它和 lein 一样强大。

对于命令行脚本,有 babashka https://github.com/babashka/babashka 被解释为 Clojure 用于脚本 - 甚至可以从命令行调用。

相似文章

最新文章