在Clojure中使用REPL进行快速尝试的替代方法

时间:2018-10-08 08:19:28

标签: clojure

在Python世界中,每当我需要尝试某些操作时,我都会制作一个新文件a.py并插入要尝试的代码,然后运行它。这是因为shebang线 #!/usr/bin/env python3 哪个告诉操作系统哪个解释器来调用文件。

clojure中有与此等效的东西吗?每当我只想查看文件中几行代码的作用时,我都不想跳过运行lein new app并指定主要ns的所有麻烦。

请注意,我已经知道lein repl。我试图用它作为shebang #!/usr/bin/lein repl 但这只会带来一个错误 No :main namespace specified in project.clj.

2 个答案:

答案 0 :(得分:2)

如果您有Clojure CLI tools installed,则可以使用shebang脚本:

test.clj

#!/usr/bin/env clj

(def x 10)
(println "x =" x)

在终端中:

chmod +x test.clj
./test.clj

输出:

x = 10

答案 1 :(得分:1)

您可以通过启动来执行此操作。参见https://github.com/boot-clj/boot/wiki/Scripts

另外,ClojureVerse在https://clojureverse.org/t/scripting-with-clj/1618/5上有一个线程,正在讨论一些选项。

仍然,您应该知道这种方法可能不是很有用。一方面,您经常要管理对另一方的依赖关系,这是JVM的启动时间,尤其是在您需要首先编译一些clojure源时。如果您因为要进行尝试而需要多次运行脚本,那么启动时间很快就会成为真正的障碍。

作为一个想法,我通常会保留一个leiningen项目以进行快速实验。在这里,我可以根据需要调整依赖关系,并迅速启动REPL以修改想法并尝试尝试。对我而言,找到并运行此REPL并已连接Emacs并不少见。