Esempio n. 1
0
        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");
        }