从一个彻头彻尾的新人到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不是).我不是想煽动争论.我只是感到沮丧.做我想做的事情应该有一个简单的,众所周知的公式.)
当你想外部依赖你需要或者一个新的项目,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)