Вызов Java из Clojure - PullRequest
       12

Вызов Java из Clojure

6 голосов
/ 05 декабря 2008

Когда я пытаюсь запустить следующий код (из REPL) в Clojure:

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

Я получаю следующую ошибку:

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)

Что я здесь не так делаю?

Ответы [ 2 ]

5 голосов
/ 05 декабря 2008

Ваш код работает для меня, используя последнюю версию 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]

Вы используете релиз 16 сентября? Вам почти нужно использовать SVN-версию Clojure. Это меняется слишком быстро.

2 голосов
/ 05 декабря 2008

Я думаю, что вы имеете в виду «Вызов Java из Clojure». Они все еще возятся с синтаксисом .

...