2011-05-06 35 views
14

我是Clojure和Leiningen的新手,我确定我想要使用的一些位于clojure.contrib.generic.math-functions。我在http://richhickey.github.com/clojure-contrib/branch-1.1.x/math-api.html上找到了API的相关信息,但是我找不到任何能够帮助我确定应该将哪些内容放入我的project.clj文件中的依赖关系。在哪里可以找到Leiningen依赖关系的有效版本号

我试过[clojure.contrib.generic.math-functions "1.1"],[clojure.contrib.generic.math-functions "1.1.x"][clojure.contrib.generic.math-functions "1.1.0"]。对于每一个这种的,我得到的东西像...

... 
Caused by: org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException: Missing: 
---------- 
1) clojure.contrib.generic.math-functions:clojure.contrib.generic.math-functions:jar:1.1 
+0

这里是正确的链接,最新的稳定版本的文档,该库: http://clojure.github.com/clojure-contrib/generic.math-functions-api.html – 2011-05-07 01:57:47

回答

11

所有的Clojure-contrib请命名空间被运往一个jar文件中,对此的依赖已上市,如:

[org.clojure/clojure-contrib "1.2.0"] 

请请注意,该工件有不同的版本可用。 1.2.0是目前的稳定版本。

为了使用从数学函数的命名空间来功能在你的Clojure代码,你需要或者requireuse这样的命名空间,通常ns表格内的源文件的开头做:

(ns my.namespace 
    (:use [clojure.contrib.generic.math-functions])) 

看看here看看userequire之间的区别。

+0

谢谢。我的'lein deps'现在可以正常工作,使用你的例子。你看起来在哪里找到那个版本号?它来自https://github.com/richhickey/clojure-contrib上的“Switch Tags”下拉菜单吗? – 2011-05-06 22:17:11

+0

根据本主题中的其他评论,当前的稳定版本是1.2.0,我更新了我的帖子以反映这一点。其他可用的版本可以看到[这里](http://build.clojure.org/releases/org/clojure/clojure-contrib/) – skuro 2011-05-07 07:50:46

+0

不要使用richhickey回购。所有积极的开发已经在https://github.com/clojure/clojure很长一段时间,但richhickey的东西仍然首先在谷歌,因为它有很多链接。 – amalloy 2011-05-09 05:48:37

5

您通常可以在clojars.org找到您需要的东西 - 这是leiningen的默认存储库。 Clojure中的当前稳定版本是1.2.0,所以你必须在这您leiningen project.clj

[org.clojure/clojure "1.2.0"] 
[org.clojure/clojure-contrib "1.2.0"] 

在顶部使用通用的数学函数在你的Clojure,requireuse它在你的命名空间声明源文件:

(ns your-namespace 
    (:use [clojure.contrib.generic.math-functions :as mathf])) 

这使您可以参考函数命名空间是这样的:

(mathf/abs -10) ;; => 10 

:use - 使用:as命名空间是使用代码中其他名称空间的函数的首选方法。 require是可以的,但是你必须在整个名字空间前缀你的函数(例如clojure.contrib.generic.math-functions/abs),这是不实际的。使用没有:as的名称空间,您可以使用这些函数,而不需要任何前缀(例如abs),但是您更可能遇到命名空间冲突,并且可能很难看到函数来自何处,尤其是如果您使用了许多库。

您可以通过检出http://clojars.org/repo/来浏览默认leiningen存储库中可用的所有库。当1.3.0超出clojure-contrib的结构会发生变化,所以你必须,如果你正在使用的版本1.3.0-α-XX到包括特定的contrib库:

[org.clojure.contrib/generic "1.3.0-alpha4"] 
+0

感谢clojars.org链接。这有很大帮助! – 2011-05-06 22:43:03

+1

目前Clojure的稳定版本是1.2.1,但Contrib仍然在1.2.0。 “richhickey”回购已过时 - 所有内容均由现在的“clojure”组织管理:https://github.com/clojure - 遗憾的是,Google中仍存在很多旧链接:( – 2011-05-07 01:52:49

+0

)另请注意,Clojure 1.3 .0正在开发中,Contrib正在进行重组/更新,因此将不再有单一的整体Contrib库。请参阅此页获取更多信息:http://dev.clojure.org/display/design/Contrib+Library+Names – 2011-05-07 01:56:10

9

Leiningen的下一个版本为此目的将有一项搜索任务。它将搜索Clojars,Maven Central以及您项目列出的任何其他存储库,前提是它们提供可下载的索引。它已经实现了,所以如果你从git运行Leiningen,你可以使用它。

此外,Leiningen教程涵盖了这一点。输入“lein帮助教程”。

+0

'lein search math' does not appear to search因为他们不在clojars或中央。 (v1.6.1) – Annan 2012-03-22 12:39:46

+0

你仍然需要知道你想要什么版本,afaik。 – Mars 2015-04-20 18:46:48

2

现在clojure.contrib已经被分解,数学函数被称为math.numeric-tower。雷音依赖指定这样的:

[org.clojure/math.numeric-tower "0.0.1"]

您可以使用或要求作为似乎是适当的,例如

(use '[clojure.math.numeric-tower])

相关问题