javaから実行その2 - Clojure
2014/01/25

clojureです。
javaから文字列を渡してコンパイルして、できあがったオブジェクトを実行してみます。
コンパイルするコストが小さければ、実行させたいときにコンパイルして実行したいなと。
package jp.deiji.ext;
import java.io.StringReader;
import clojure.lang.Compiler;
import clojure.lang.Var;
public class ExtClojure02 {
public static void main(String[] args) {
a();
}
static void a() {
new clojure.lang.RT();
String str = "(def hello (fn [] (println \"Hello world\")))";
Object o = Compiler.load(new StringReader(str));
System.out.println(o);
System.out.println(o.getClass());
Var v = (Var) o;
v.call();
v.invoke();
}
}
実行結果です。
#'clojure.core/hello
class clojure.lang.Var
Hello world
Hello world
: