2010-12-13 8 views
5

Me preguntaba si hay algún código clojure o macros que no funciona cuando se inserta en un proxy clojure de código Java, por ejemplo:¿Funciona todo el código clojure dentro de un proxy Java?

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

O puede que sólo integrar las llamadas a funciones de Java dentro del proxy?

Respuesta

6

Cualquier código de Clojure debería funcionar dentro de proxy.

Detrás de escena, las funciones de Clojure se compilan en objetos de Java de todos modos, y llamar a una función de Clojure es técnicamente una llamada de método de Java. La expansión de macro todavía funciona normalmente con proxy. Todas las macros de Reader funcionan normalmente, etc.

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

user> (.toString (proxy [Object] [] 
        (toString [] 
        (str (foo) \space (reduce + (range 5)))))) 
"FOO 10" 
Cuestiones relacionadas