一个完全是 clojure 新手的问题:如果我希望能够从任何地方启动 clojure REPL,例如因为我只想计算一个指数,该怎么办?如何设置我的系统来执行此操作?(我已经删除了之前指向不完全答案的链接,因为它们把问题弄得乱七八糟。)下面@Jared314 的答案链接的 Pomegranate 文档帮助我看到我可以做到这一点:
~$ lein repl
...
user=> (use '[cemerick.pomegranate :only (add-dependencies)])
nil
user=> (add-dependencies :coordinates '[[org.clojure/math.numeric-tower "0.0.2"]])
{[org.clojure/clojure "1.3.0"] nil, [org.clojure/math.numeric-tower "0.0.2"] #{[org.clojure/clojure "1.3.0"]}}
user=> (use 'clojure.math.numeric-tower)
nil
user=> (expt 2 3)
8
耶!
现在,无论我在哪个子目录中,每次启动 REPL 时,我如何才能做到这一点?
我想我只是对基本的clojure设置一无所知。对于那个很抱歉。
第二次重大修改:
我发现如果我在没有 lein 的情况下使用 raw clojure,我可以在 repl 启动时执行命令。例如,如果文件.clojurerc
包含 text (print "Yow!\n")
,我可以这样做:
~$ java -cp /usr/local/lib/clojure-1.5.1/clojure-1.5.1.jar clojure.main -i .clojurerc -r
Clojure 1.5.1
Yow!
user=>
我可以做这样的事情lein
吗?或者更好的是,在 clojure 中自动加载 clojure.math.numeric-tower 而不使用 lein(因为对于简单的命令行实验,lein 的启动比直接启动 clojure 慢)。
(看起来好像我不是想自己解决这个问题,但事实并非如此。我一直在进行网络搜索和实验,但我一直在碰壁。我开始觉得 clojure 是仅适用于成熟的编程项目。我曾认为它可能对临时实验和计算有好处(就像 lisps 传统上那样,但 Java 不是)。我不是试图煽动争论。我只是感到沮丧。应该有一个简单的、众所周知的公式来做我想做的事情。)