Работает ли весь код clojure в Java-прокси? - PullRequest
5 голосов
/ 14 декабря 2010

Мне было интересно, есть ли какой-нибудь код clojure или макросы, которые не работают, когда встроены в прокси clojure для кода Java, например:

(proxy [Some Java Interface] []
  (some Java Method [args]
  ...
  Clojure code
  ...
  )
)

Или я могу встраивать вызовы только для функций Java в прокси?

1 Ответ

6 голосов
/ 14 декабря 2010

Любой код Clojure должен работать внутри proxy.

За кулисами функции Clojure в любом случае компилируются в объекты Java, и вызов функции Clojure технически является вызовом самого метода Java. Расширение макроса все еще работает нормально с proxy. Все читатели работают нормально и т. Д.

user> (defmacro foo [] "FOO")
#'user/foo

user> (.toString (proxy [Object] [] 
                   (toString [] 
                     (str (foo) \space (reduce + (range 5))))))
"FOO 10"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...