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
 

: