私はClojureを初めて使用し、を再バインドして出力をファイルにリダイレクトしようとしています*out*
。単純なケースでは、それはうまく機能します:
(binding [*out* (new java.io.FileWriter "test.txt")]
(println "Hi"))
これは私が期待することを行い、ファイルtest.txtに「Hi」を出力します。ただし、for
ループを導入すると、問題が発生します。
(binding [*out* (new java.io.FileWriter "test.txt")]
(for [x [1 2]]
(println "Hi" x)))
今回は、すべての出力がstdoutに送られ、ファイルは空になります。何が起きてる?
違いがあれば、私はLeiningenを使用しています。
Leiningen 2.0.0 on Java 1.7.0_13 Java HotSpot(TM) 64-Bit Server VM