clojure.contrib関数を使用して、Slime Repl
質問
clojure.contrib.traceネームスペースで、clojure.contrib.traceの名前空間をREPLのスライムの機能を使用したい。スライムに自動的にロードするにはどうすればよいですか?関連する質問、特定の名前空間を実行中のREPLに追加するにはどうすればよいですか?
Clojure.Contrib APIでは、次のような使用について説明しています。
(ns my-namespace
(:require clojure.contrib.trace))
ただし、これを私のコードに追加すると、ファイルが「シンボルを解決できない」エラーがトレース名空間の関数のエラーをロードできません。
Leiningen 'Lein Swank'を使用してServersocketを起動し、Project.cljファイルは次のようになります
(defproject test-project "0.1.0"
:description "Connect 4 Agent written in Clojure"
:dependencies [[org.clojure/clojure "1.2.0-master-SNAPSHOT"]
[org.clojure/clojure-contrib "1.2.0-SNAPSHOT"]]
:dev-dependencies [[leiningen/lein-swank "1.2.0-SNAPSHOT"]
[swank-clojure "1.2.0"]])
すべてが最新のように思えます、すなわち「レイン・デプス」は変化をもたらしません。元気?
解決
あなたは「シンボルを解決できない」例外を取得しています
:require
指定された名前空間からVARSを引き込むことはなく、名前空間自体のみを使用できるようにします。したがって、あなたの場合
(:require foo.bar)
あなたの中でns
フォーム、あなたは書く必要がありますfoo.bar/quux
varにアクセスしますquux
名前空間からfoo.bar
. 。使用することもできます(:require [foo.bar :as fb])
それを短くすることができるようにfb/quux
. 。最後の可能性は、書くことです(:use foo.bar)
代わりは;それはすべてのVARをから作りますfoo.bar
名前空間で利用できます。一般的に悪いスタイルと見なされていることに注意してください:use
外部ライブラリ;ただし、単一のプロジェクトではおそらく問題ありません。Re:REPLで自動的に利用可能なものを作成します:
:require
,:use
と:refer
の条項ns
フォームにはカウンターパートがありますrequire
,use
とrefer
機能しますclojure.core
. 。に対応するマクロもあります:refer-clojure
と:import
.それはそれを意味することを意味します
clojure.contrib.trace
REPLで利用できます(require 'clojure.contrib.trace)
また(require '[clojure.contrib.trace :as trace])
. 。なぜならその理由に注意してくださいrequire
関数です。ライブラリ仕様を引用する必要があります。 (use
とrefer
また、引用されたlibスペックも取得します。import
とrefer-clojure
引用は必要ありません。)Clojure Replを起動するたびに特定の名前空間を利用できる最も簡単な方法(スライムでそれをするときを含む)は、適切なものを置くことです
require
電話~/.clojure/user.clj
. 。を参照してください すべての可能な名前空間が必要です ジョン・ローレンス・アスペンによるブログ投稿あなたが入れられるかもしれないものの説明についてuser.clj
引き込む すべて コントリブの(私がやらないこと、個人的には、私は持っていますが(use 'clojure.contrib.repl-utils)
そこで)。