为什么我不能使用Clojure代码访问我的Leiningen依赖项?

时间:2012-12-31 19:50:59

标签: math clojure read-eval-print-loop leiningen

在Clojure中,如果我想引入clojure.inspector函数,我可以这样:

(use `[clojure.math.numeric-tower :include (expt)])

从REPL,我现在可以评估函数expt。

但是,在我看来应该有(也可能是)另一种方法 - 使用Leiningen依赖项来提取代码。

我将此行添加到我的project.clj:

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

然后我重新启动REPL以引入新的依赖项。我甚至做“lein deps”是安全的(该命令没有输出)。当我尝试评估expt时,它给了我一个RuntimeException,并说它无法解析符号。

如何使用Leiningen依赖项访问expt函数?

1 个答案:

答案 0 :(得分:3)

你做不到。它不像那样工作。添加依赖项会将代码放在类路径上,这意味着它可供您使用。为了实际使用命名空间内的内容,您需要使用

(require '[the-namespace :refer [the things you want to use]])

(require '[the-namespace :as tn])
(tn/somevar)

或在ns声明中执行其中任何一项(不在REPL中并使用文件时)

(ns foo
  (:require [the-namespace :as tn]))