我試圖修改爲用於Clojure語言的Intellij的插件Cursive。我已經通過Lein導入了一個非常標準的新應用程序,現在嘗試使用幾個core.async構造。Clojure core.async和clojure.core名稱空間元素似乎碰撞
這裏的項目定義:
(defproject app "0.1.0-SNAPSHOT"
:description "Clojure project illustrating basic core.async constructs"
:dependencies [[org.clojure/clojure "1.5.1"]
[org.clojure/core.async "0.1.346.0-17112a-alpha"]])
和源:
(ns app.core)
(require '[clojure.core.async :as async :refer :all])
(let [c (chan 10)]
(>!! c "hello")
(println (<!! c))
(close! c))
基本Clojure的構建工作,沒有任何問題。但是,在雷音加入core.async依賴後,每次我嘗試運行一段代碼,這些警告突然出現:
WARNING: partition-by already refers to: #'clojure.core/partition-by in namespace: app.core, being replaced by: #'clojure.core.async/partition-by
WARNING: map already refers to: #'clojure.core/map in namespace: app.core, being replaced by: #'clojure.core.async/map
WARNING: into already refers to: #'clojure.core/into in namespace: app.core, being replaced by: #'clojure.core.async/into
WARNING: reduce already refers to: #'clojure.core/reduce in namespace: app.core, being replaced by: #'clojure.core.async/reduce
WARNING: partition already refers to: #'clojure.core/partition in namespace: app.core, being replaced by: #'clojure.core.async/partition
WARNING: take already refers to: #'clojure.core/take in namespace: app.core, being replaced by: #'clojure.core.async/take
WARNING: merge already refers to: #'clojure.core/merge in namespace: app.core, being replaced by: #'clojure.core.async/merge
這似乎是某種形式的命名空間衝突。
有沒有簡單的方法來解決這個問題?
問題不在異步,它在你的使用:參考:所有。這是一個壞主意,因爲當你在查看代碼時,你無法知道函數來自哪個名稱空間。 – 2014-10-03 05:47:39
我曾經認爲這是從[core.async演練](https://github.com/clojure/core.async/blob/master/examples/walkthrough.clj)中提取表達式的標準導入方式。無論如何,這現在更加清晰。謝謝! – thetwan 2014-10-03 14:21:41