Win7 64 ビット、Clojure 1.2.0、Java 1.6.0_22 を使用した Noob の質問
コマンドラインから clojure を起動すると、簡単に pprint 関数が利用できます。
user=> pprint
#<pprint$pprint clojure.pprint$pprint@16dfa45>
user=> (pprint "hi")
"hi"
nil
user=>
しかし、ファイルから pprint を使用しようとすると、エラーが発生します。これは、pprint ドキュメントに示されているように、名前空間 (ns... :require...) の有無にかかわらず発生します。
clj ファイルは次のとおりです。
(ns whatevah
(:require clojure.pprint))
(pprint "hi")
次のようなエラー:
C:\Users\mischw\code\Clojure>java -cp ";c:\users\mischw\code\clojure\classes\*;c:\Program Files (x86)\Java\SWT;c:\users\mischw\code\clojure\classes\bookcode\*" clojure.main swinglearn.clj
Exception in thread "main" java.lang.Exception: Unable to resolve symbol: pprint in this context (swinglearn.clj:14)
... 21 more
Output completed (0 sec consumed) - Normal Termination
ここで何が起こっているのかという一般的な考えがわかりません。一方が機能するのに、もう一方が機能しないのはなぜですか? それは名前空間と関係がありますか? クラスパス?他の簡単な修正?明らかに初歩的な質問ですが、これは多くの例で発生することがわかりました...それらをインポート/使用/要求/インクルードするのは簡単に思えますが、実行できません。