2008-12-04 17 views
6

Kiedy próbuję uruchomić następujący kod (od REPL) w Clojure:Wywoływanie Javy z Clojure

(dotimes [i 5] 
    (.start 
    (Thread. 
    (fn [] 
     (Thread/sleep (rand 1000)) 
     (println (format "Finished %d on %s" i (Thread/currentThread))))))) 

pojawia się następujący błąd:

java.lang.Exception: Unable to resolve symbol: i in this context 
clojure.lang.Compiler$CompilerException: NO_SOURCE_FILE:6: Unable to resolve symbol: i in this context 
     at clojure.lang.Compiler.analyze(Compiler.java:3713) 

Co robię źle tutaj?

Odpowiedz

5

Twój kod działa dla mnie przy użyciu najnowszego SVN (1144).

user> (dotimes [i 5] (.start (Thread. (fn [] (Thread/sleep (rand 1000)) (println (format "Finished %d on %s" i (Thread/currentThread))))))) 

Finished 0 on Thread[Thread-16,5,main] 
Finished 4 on Thread[Thread-20,5,main] 
Finished 3 on Thread[Thread-19,5,main] 
Finished 1 on Thread[Thread-17,5,main] 
Finished 2 on Thread[Thread-18,5,main] 

Czy używasz wersji z 16 września? Prawie musisz użyć wersji Clojure SVN. Zmienia się zbyt szybko.