void Run(string[] args) { Log($"starting..."); Log($" CLOJURE_LOAD_PATH={Environment.GetEnvironmentVariable("CLOJURE_LOAD_PATH")}"); IFn load = Clojure.var("clojure.core", "load-file"); Log($" clojure.core/load-file found."); IFn printEx = Clojure.var("clojure.stacktrace", "print-cause-trace"); Log($" clojure.stacktrace/print-stack-trace found."); var script = args[0]; Log($" (load-file '{script}') starting..."); try { load.invoke(script); Log($" (load-file '{script}') done."); } catch (Exception ex) { Console.WriteLine(ex.Message); printEx.invoke(ex); } Log("done."); }
public static void Main(string[] args) { var fn = Clojure.var("clojure.core", "println"); fn.invoke("Hello from Clojure"); Console.Read(); }
void Run(string[] args) { Log($"starting..."); Log($" CLOJURE_LOAD_PATH={Environment.GetEnvironmentVariable("CLOJURE_LOAD_PATH")}"); IFn load = Clojure.var("clojure.core", "load-file"); Log($" clojure.load done."); load.invoke("./hello-world.clj"); Log($" ./hello-world.clj done."); Log("done."); }
static ClojureInit() { Eval = Clojure.var("clojure.core", "eval"); object execFn = Clojure.read(@" (defn execute ""evaluates s-forms"" ([request](execute request *ns*)) ([request user-ns] (try (binding [*ns* user-ns] (eval (read-string request))) (catch Exception e (str (. e Message) "" "" (. e StackTrace ))) )))"); object nsGenFn = Clojure.read(@" (defn generate-ns ""generates ns for client connection"" [] (let [user-ns (create-ns (symbol(str ""user"" )))] (execute(str ""(clojure.core/refer 'clojure.core)"") user-ns) user-ns)) "); //object definer = Clojure.read("(fn [name data] (def (symbol name) data ) ) "); //DefinerFn = Eval.invoke(definer) as IFn; var SyncCode = Clojure.read("(fn [handler document prom] (deliver prom (try (handler document) (catch Exception e e)) ) ) "); Eval.invoke(Clojure.read("(def ^:dynamic sync)")); Sync = Eval.invoke(SyncCode) as IFn; var replCode = Clojure.read("(fn [in out err synchronizer] (binding [*in* in, *out* out *err* err sync synchronizer] (clojure.main/with-bindings (loop [] (try (clojure.main/repl ) (catch Exception e (clojure.main/repl-caught e) (set! *e e))) (flush) (recur)) ) ))"); repl = Eval.invoke(replCode) as IFn; ExecuteInNs = Eval.invoke(execFn) as IFn; nsGen = Eval.invoke(nsGenFn) as IFn; NS = nsGen.invoke(); ExecuteInNs.invoke("(use \'clojure.reflect \'clojure.pprint \'clojure.repl)", NS); //ReplExe = ExecuteInNs.invoke(" (defn print-exe [r] (with-out-str (clojure.pprint/pprint (clojure.core/execute r)))") as IFn; }