使用clojure.math.numeric-tower或任何库

时间:2012-01-03 00:14:49

标签: math clojure

我尝试学习一点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文件放在任何地方。 它仍然无效。

使用这些库的方法是什么?

4 个答案:

答案 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一样。如果两者都在当前目录中,您将使用

启动clojure
java -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)