3

这个页面介绍了很多clojure库。此页面还评论考虑使用 clojure-contrib。

  • 为什么 clojure-contrib.jar 的大小不同?leiningen 的 clojure-contrib-1.2.0-beta1.jar 大小为 479.2KB,但我从Programming Clojure下载的 conjure-contrib.jar为 2.9MB。正如我在这里解释的那样。clojure-contrib.jar 到今天还没有标准化吗?
  • 页面中的库应该是 clojure-contrib 的一部分吗?如果是这样,为什么 leiningen 的 clojure-contrib.jar 没有 str-utils 或 repl-utils?结果,我无法在 emacs/slime 中使用 leiningen (lein swank) 运行(使用 'clojure.contrib.str-utils)。
  • 页面中显示的clojure.contrib.A是什么意思?据我所知,(使用'ab)让clojure找到要加载的CLASSPATH/A/B.clj并按照Programming Clojure书第18页中的说明进行引用。这是说/clojure/contrib中的A clj文件目录还是在 clojure-contrib.jar 中?
  • 如何下载、安装和设置页面中的库?

添加

更新 leiningen 后,我检查 (use 'clojure.contrib.str-utils) 工作正常。但是,(使用'clojure.contrib.repl-utils)给了我以下错误。

  [抛出的类 java.lang.IllegalStateException]

重启:
 0: [QUIT] 退出 SLIME 顶层

回溯:
  0:clojure.lang.Namespace.warnOrFailOnReplace(Namespace.java:88)
  1:clojure.lang.Namespace.reference(Namespace.java:110)
  2:clojure.lang.Namespace.refer(Namespace.java:168)
  3:clojure.core$refer.doInvoke(core.clj:3288)
  4:clojure.lang.RestFn.invoke(RestFn.java:411)
  5:clojure.lang.AFn.applyToHelper(AFn.java:163)
  6:clojure.lang.RestFn.applyTo(RestFn.java:133)
  7:clojure.core$apply.invoke(core.clj:542)
  8: clojure.core$load_lib.doInvoke(core.clj:4781)
  9:clojure.lang.RestFn.applyTo(RestFn.java:143)
 - 更多的 - 

(require 'clojure.contrib.repl-utils)工作,我可以使用(clojure.contrib.repl-utils/show #{}),但是(refer 'clojure.contrib.repl-utils)给我一个错误。

这里还有一些问题。

  • 为什么 (use '..repl-utils) 会导致错误,而 str-utils 不会?这两个库有什么区别?
4

2 回答 2

2

我不确定您所说的标准化是什么意思,但是 contrib 不会在没有充分理由的情况下进行反向破坏性更改。有些事情偶尔会被移到核心,如果它们足够重要的话——我似乎记得这样做的序列函数,并且可能是你正在考虑的字符串函数。

回复:Leiningen:一个新版本刚刚问世。无论如何,听起来您可能有版本冲突。

关于类路径:许多不愉快问题的根源,直到你习惯它(或者它对我来说)。考虑到上下文,它可能是您提到的任何一种事情,我们几乎可以肯定是在谈论 clojure-contrib.jar。

下载等有多种方法。几乎在所有情况下,最简单的方法是将它们列为项目的 project.clj 文件中的依赖项。换句话说,使用 leiningen。您也可以从clojars下载它们。或者您可以克隆他们的 github 存储库,并单独编译它们,然后将它们复制到项目的 lib 目录中。但说真的,只需使用 leiningen。

于 2010-08-02T06:50:41.657 回答
1
  1. clojure-contrib 中的许多功能在 Clojure 1.2 中移入了 clojure 核心。现在和 1.1 的差异与 clojure.core 的增长差不多。

  2. 获取 leiningen 更新

  3. 不知道我只是用 leiningen

  4. 只需将其添加到 leinigen 中的 project.clj

于 2010-08-02T08:14:07.763 回答