2008-12-04 20 views
6

Cuando trato de ejecutar el siguiente código (desde el REPL) en Clojure:llamar a Java desde Clojure

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

me sale el siguiente error:

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) 

¿qué estoy haciendo mal aquí?

Respuesta

5

Su código funciona para mí utilizando el último 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] 

¿Está utilizando el lanzamiento del 16 de septiembre? Casi tiene que usar la versión SVN de Clojure. Está cambiando demasiado rápido.