javaから実行その7コンパイルして、invokeしてeval実行 - Clojure 2014/02/08

clojureです。
そろそろ行き詰まってきた感があります。

evalを試してみました。
まずevalを内部で実行する関数を用意して、それにlistを渡してあげるというイメージです。

参考


実行結果

#'clojure.core/m
class clojure.lang.Var
hello



package jp.deiji.ext; import java.io.StringReader; import clojure.lang.Compiler; import clojure.lang.PersistentList; import clojure.lang.Var; public class ExtClojure07 { public static void main(String[] args) { a(); } static void a() { new clojure.lang.RT(); {// // evalする関数を定義 String str = "(defn m[s](eval s))"; Object o = Compiler.load(new StringReader(str)); System.out.println(o); System.out.println(o.getClass()); // listを生成 Object o2 = Compiler.load(new StringReader( "(list (symbol (str \"print\" \"ln\")) \"hello\")")); Var v = (Var) o; v.invoke(o2); } } }

: