同时使用白炽灯和Clojure汤

同时使用白炽灯和Clojure汤,clojure,jsoup,incanter,name-clash,Clojure,Jsoup,Incanter,Name Clash,我正在学习Clojure-这很有趣!我试图在同一个文件中使用白炽灯和Clojure汤: (require '[jsoup.soup :as soup]) (use '(incanter core stats io charts datasets)) 我得到以下错误: CompilerException java.lang.IllegalStateException: $ already refers to: #'jsoup.soup/$ in namespace: user, compilin

我正在学习Clojure-这很有趣!我试图在同一个文件中使用白炽灯和Clojure汤:

(require '[jsoup.soup :as soup])
(use '(incanter core stats io charts datasets))
我得到以下错误:

CompilerException java.lang.IllegalStateException: $ already refers to: #'jsoup.soup/$ in namespace: user, compiling
我想我明白为什么,但我如何才能解决这个问题?感谢这个网站和所有的大师


谢谢。

如果您实际上只使用了一个
$
函数,那么您可以排除另一个

(ns myproject.example
   (:require [jsoup.soup :as soup]
             [incanter [core :refer :all :exclude [$]]
                       [stats :refer :all] 
                       [io :refer :all] 
                       [charts :refer :all] 
                       [datasets :refer :all]]))
或者,您可以采用显式命名要在命名空间中引用的变量的方法,并通过
命名空间别名/function
显式调用其他变量,这看起来更像这样:

(ns myproject.example
   (:require [jsoup.soup :as soup]
             [incanter [core :refer [$ ... and others here ...] 
                             :as incanter]
                       [stats :as stats] 
                       [io :as io] 
                       [charts :as charts] 
                       [datasets :as dataset]]))
在现代clojure代码中,使用其他名称空间的
use
方法是不受欢迎的,并且已被refere形式所包含,因此我在这些示例中使用该形式。强烈建议将refereforms放在名称空间声明中