static void BootClojureAndNostrand() { var assemblyPath = Path.GetDirectoryName(Assembly.Load("Clojure").Location); foreach (var cljDll in Directory.EnumerateFiles(assemblyPath, "*.clj.dll")) { Assembly.LoadFile(cljDll); } RT.Initialize(doRuntimePostBoostrap: false); RT.TryLoadInitType("clojure/core"); RT.TryLoadInitType("magic/api"); RT.var("clojure.core", "*load-fn*").bindRoot(RT.var("clojure.core", "-load")); RT.var("clojure.core", "*eval-form-fn*").bindRoot(RT.var("magic.api", "eval")); RT.var("clojure.core", "*load-file-fn*").bindRoot(RT.var("magic.api", "runtime-load-file")); RT.var("clojure.core", "*compile-file-fn*").bindRoot(RT.var("magic.api", "runtime-compile-file")); RT.var("clojure.core", "*macroexpand-1-fn*").bindRoot(RT.var("magic.api", "runtime-macroexpand-1")); // var loadFunction = RT.var("clojure.core", "*load-fn*"); // loadFunction.invoke("nostrand/core"); RT.var("clojure.core", "*load-fn*").invoke("nostrand/core"); // loadFunction.invoke("nostrand/tasks"); RT.var("clojure.core", "*load-fn*").invoke("nostrand/tasks"); }