clojure - 在 Paradise 中导入 Clojure 库时遇到问题

标签 clojure slime incanter

我偶尔会遇到这个问题,并且通常会解决它,但这相当令人沮丧。

我拥有全部Incanter (如果你不知道的话请检查一下:它非常棒)在我的类路径上。我尝试像这样导入它(通过 Slime REPL):user> (use 'incanter.core),但失败了。

这样做:user> (use 'clojure.contrib.def) 工作得很好,并且这个文件位于我的类路径上的同一个位置。

无论如何,错误与类路径无关:它是这样的:

Don't know how to create ISeq from: clojure.lang.Symbol
  [Thrown class java.lang.IllegalArgumentException] 

你可以看到我的整个终端 here (屏幕截图。)

我不知道这里发生了什么,这真的很令人沮丧,因为我真的很想使用 Incancter,而且我可以从 Incanter 二进制文件的 REPL 中获得。我绝对不想以此为基础进行开发——而这应该可行。

任何帮助将非常感激。

编辑:

看起来就像 Incanter requires Clojure 1.2 和 lein swank 给了我 Clojure 1.1。这可能是我出现问题的原因:如果是这样,有没有办法继续将 Swank & Lein 与 Clojure 1.2 一起使用

再次感谢!

编辑:

显然,如果您开始使用 Clojure-1.1 和 lein swank ,除非您创建一个新项目,否则您将不得不使用它。

如果以后的人遇到这个问题,this article helped me out ,但是还有,至少对我来说,如果您使用leink swank和Clojure-1.1开始一个新的lein项目,那么您必须开始一个新的lein项目。简单地更改您的project.clj 文件,然后再次lein swank 是行不通的。

最佳答案

是的,您可以在 Clojure 1.2 中使用 Leiningen 和 swank-clojure。您可能需要使用最新版本的 Leiningen(我不确定某个旧限制是否仅影响 lein repl,还是也影响 lein swank;无论如何,请尝试您可以在 GitHub 的下载部分找到 1.2-RC2)。您还需要使用最近的 swank-clojure;我自己使用最先进的结账工具,买你的 here .

除此之外,只需为 Clojure 和 contrib 使用 1.2 jar。 (Lein 使用它自己的 Clojure,与用于 lein swank 的 Clojure 分开,用于其内部工作,您永远不需要关心它;swank-clojure 没有 AOT 命名空间,并且不特别关心 Clojure 版本,除了偶尔(很长一段时间!)当出现问题时,会应用补丁并恢复快乐。)

我希望上述内容有所帮助,但如果没有帮助:您的问题描述不足以让我清楚地了解正在发生的情况。您能否添加有关“所有 Incanter”在您的类路径中意味着什么的信息(您是指 jar 吗?源?您从哪里获得它们?您如何设置您的类路径?) 。如果不了解这一点,就很难复制您的设置来尝试追踪问题的根源。 当然,如果升级某些版本可以解决问题,请忽略我当前的困惑。 ;-)

关于clojure - 在 Paradise 中导入 Clojure 库时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3237700/

相关文章:

emacs - SLIME who-用 'nesting exceeds max-lisp-eval-depth' 报错

emacs - 'swank-clojure' 究竟做了什么,我们有 'swank-SOMETHING_ELSE' 吗?

r - Clojure/Incanter 中的快速向量数学

scala - Clojure future 的失败

maven - 如何强制 lein deps 重新获取本地 jars/libs

java - Clojure 中用于实现接口(interface)的 Java 类的多态性 - 包装器编写

string - 字节收集到 clojure 上的字符串

emacs - 将 s 表达式包裹在 slime 中 (emacs)

clojure - 咒术依赖

java - 使用 incanter 从 clojure 中的数组获取均值和协方差矩阵