我尝试学习一点Clojure,因为语言看起来不错。 但似乎没有关于如何安装/使用库的信息,例如clojure.math.numeric-tower。
现在我通过在我的Linux shell中键入它来运行REPL:
java -cp ~/Clojure/clojure-1.3.0/clojure-1.3.0.jar clojure.main
我下载了数字塔罐,并把它放在任何地方。我已经以各种可能的方式修改了-cp选项。我把numeric_tower.clj文件放在任何地方。 它仍然无效。
使用这些库的方法是什么?
答案 0 :(得分:30)
昨天我也有同样的问题(也是Clojure的新人)。根据我的理解,在Clojure 1.2和1.3之间,他们将许多contrib库拆分为单独的项目,以便更容易管理它们。并缩小了Clojure的核心。
完成你要做的事的最简单的方法是通过leiningen(我昨天晚上在#clojure IRC频道的技术上得到了这个答案)。建议使用leiningen创建一个“游乐场”项目,您可以在其中玩耍并学习Clojure。
所以,用:
创建一个游乐场项目lein new playground
修改project.clj文件以包含:
[org.clojure/math.numeric-tower "0.0.1"]
作为依赖。有人告诉我,http://search.maven.org/是找出哪个是特定库最新版本的最简单方法。
然后,运行
lein deps
拉进罐子。现在你已经准备好了
lein repl
开始。
启动repl后,拉入数字塔:
(require '[clojure.math.numeric-tower :as math])
然后你可以做你的expt电话:
(math/expt 4 6) ;; yields 4096
希望有所帮助!
答案 1 :(得分:1)
感谢所有人。它现在有效。 事实上,让我感到困惑的问题是java在类路径中冒号后不理解〜(linux home)符号。 我在做什么
java -cp ~/Clojure/clojure-1.3.0/clojure-1.3.0.jar:~/Clojure/lib clojure.main
并且java不明白。
但是,如果你这样做
java -cp ~/Clojure/clojure-1.3.0/clojure-1.3.0.jar:/home/username/Clojure/lib clojure.main
它有效。
classpath变量的奇怪行为。
我会使用lein,但是因为我正在考虑为android做一些编程,我认为如果我能理解所有这些只适用于java的话会更好。除非lein能够打包android项目吗?
无论如何,谢谢。所有三个回复都非常有用。
答案 2 :(得分:0)
你可以把它直接放在你的类路径中,就像你在使用clojure.jar一样。如果两者都在当前目录中,您将使用
启动clojurejava -cp clojure-1.3.0.jar:numeric-tower.jar clojure.main
(或windows)
java -cp clojure-1.3.0.jar;numeric-tower.jar clojure.main
但是,如果该项目位于clojars或maven存储库中,则更易于使用leiningen。这类事情可能会带来很多麻烦。
答案 3 :(得分:0)
E.g。
制作lib文件夹
根据lib clojure / math
制作把文件lib / clojure / math / numeric_tower.clj
java -cp .; lib; clojure-1.3.0.jar; lib / clojure clojure.main
REPL
(使用'clojure.math.numeric-tower)