加载clojure库的最简单方法是什么?

Mar*_*ars 6 clojure

从一个彻头彻尾的新人到clojure的问题:如果我想从任何地方开始一个clojure REPL怎么办,例如因为我只是想计算一个指数?如何设置我的系统来执行此操作?(我之前删除了不完整答案的链接,因为它们弄错了问题.)@ Jared314下面的答案链接的石榴文档帮助我看到我可以这样做:

~$ 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
Run Code Online (Sandbox Code Playgroud)

好极了!

现在,无论我在哪个子目录中,每次启动REPL时如何才能实现这一点?

我想我只是对基本的clojure设置一无所知.对于那个很抱歉.

第二个主要编辑:

我已经发现,如果我使用没有lein的原始clojure,我可以在repl启动时执行命令.例如,如果文件.clojurerc包含文本(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=> 
Run Code Online (Sandbox Code Playgroud)

我能做这样的事lein吗?或者更好的是,在clojure中自动加载clojure.math.numeric-tower而不使用lein(因为对于简单的命令行实验,lein的启动比直接启动clojure慢).

(看起来我似乎并不是想靠自己来解决这个问题,但我并非如此.我一直在进行网络搜索和实验,但我一直在打砖墙.我开始觉得好像是clojure 用于完整的编程项目.我曾认为它可能适用于临时实验和计算(传统上是lisps,但Java不是).我不是想煽动争论.我只是感到沮丧.做我想做的事情应该有一个简单的,众所周知的公式.)

Jar*_*314 9

当你想外部依赖你需要或者一个新的项目,lein new testproject1中,雷音-oneoff插件,石榴,一个Leiningen轮廓:dependencies条目,或者某些特定IDE功能.(我知道至少LightTable允许在他们的Instarepl中使用外部依赖项,所以我假设您可以在Emacs和CCW中执行此操作.)

最好从创建新的测试项目开始,以便您可以看到project.clj布局.但是,如果你只想要一个repl中的一次性库,请看一下Pomegranate 命令的说明add-classpath.石榴在默认情况下是可以访问的lein repl,所以他们的例子应该没​​有任何额外的工作.

编辑:

从您更新的问题,听起来您想要一个持久的repl依赖.您可以[org.clojure/math.numeric-tower "0.0.2"]~/.lein/profiles.clj个人资料下添加到个人资料文件中:repl.

{:user {}
 :repl {:dependencies [[org.clojure/math.numeric-tower "0.0.2"]]
        :repl-options {:init (use 'clojure.math.numeric-tower)}}}
Run Code Online (Sandbox Code Playgroud)

然后当你运行lein repl:

(expt 2 3) ;=> 8
Run Code Online (Sandbox Code Playgroud)