How to call Clojure Macros from Java? -



How to call Clojure Macros from Java? -

is there anyway phone call clojure macros java?

here trying do:

rt.var("clojure.core", "require").invoke(symbol.create("clojure.contrib.prxml")); var prxml = rt.var("clojure.contrib.prxml", "prxml"); var withoutstr = rt.var("clojure.core", "with-out-str"); string stringxml = (string) withoutstr.invoke((prxml.invoke("[:name \"bob\"]")));

prxml writes *out* default why need wrap macro with-out-str returns string.

i getting error:

[java] java.lang.illegalargumentexception: wrong number of args (1) passed to: core$with-out-str [java] @ clojure.lang.afn.throwarity(afn.java:437) [java] @ clojure.lang.restfn.invoke(restfn.java:412) [java] @ clojure.lang.var.invoke(var.java:365) [java] @ javaclojure.xml.main(unknown source)

you'll have roll own withoutstr.

class yourclass { static final var withbindings = rt.var("clojure.core", "with-bindings*"); static final var list = rt.var("clojure.core", "list*"); static final var out = rt.var("clojure.core", "*out*"); static final var prxml = rt.var("clojure.contrib.prxml", "prxml"); static string withoutstr(ifn f, object args...) { stringwriter wtr = new stringwriter(); withbindings.applyto(list.invoke(rt.map(out, wtr), f, args)); homecoming wtr.tostring(); } ... string stringxml = withoutstr(prxml, "[:name \"bob\"]"); }

java clojure clojure-contrib

Comments

Popular posts from this blog

iphone - Dismissing a UIAlertView -

intellij idea - Update external libraries with intelij and java -

javascript - send data from a new window to previous window in php -