2011-05-06 78 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])

相關問題