public static LexicalEnvironment AddTo(LexicalEnvironment env)
 {
     env.Define("make-vector", new MakeVector().ToStack());
     env.Define("vector", new VectorConstructor().ToStack());
     env.Define("vector?", DelegateFunctions.MakeDatumFunction(isVector, ",vector?"));
     env.Define("vector-copy", DelegateFunctions.MakeDatumFunction(vectorCopy, ",vector-copy"));
     env.Define("vector-set!", DelegateFunctions.MakeDatumFunction(vectorSet, ",vector-set!"));
     env.Define("vector-length", DelegateFunctions.MakeDatumFunction(vectorLength, ",vector-length"));
     env.Define("vector-ref", DelegateFunctions.MakeDatumFunction(vectorRef, ",vector-ref"));
     return(env);
 }
Beispiel #2
0
 public static LexicalEnvironment AddTo(LexicalEnvironment env)
 {
     // Invoke a given instance method on an object
     env.Define("make-instance-method", DelegateFunctions.MakeDatumFunction(MakeInstanceMethod, ",make-instance-method"));
     env.Define("get-static-method", DelegateFunctions.MakeDatumFunction(GetStaticMethod, ",get-static-method"));
     env.Define("get-type", new GetTypeFunction().ToStack());
     env.Define("new", new New().ToStack());
     env.Define("atom", new WrapAtom().ToStack());
     // Define "dot" and "slash" as a macros which allow us to use
     // Clojure-style syntax for invoking and referring to methods.
     ResourceLoader.ExecuteResource(env, "LispEngine.ReflectionBinding.ReflectionBuiltins.lisp");
     return(env);
 }
Beispiel #3
0
 public static LexicalEnvironment AddTo(LexicalEnvironment env)
 {
     env = env
           .Define("log", Log.Instance)
           .Define("lambda", Lambda.Instance)
           .Define("cons", DelegateFunctions.MakeDatumFunction(DatumHelpers.cons, ",cons"))
           .Define("set-car!", DelegateFunctions.MakeDatumFunction(DatumHelpers.setCar, ",set-car!"))
           .Define("set-cdr!", DelegateFunctions.MakeDatumFunction(DatumHelpers.setCdr, ",set-cdr!"))
           .Define("apply", Apply.Instance)
           .Define("eq?", EqualFunctions.Eq)
           .Define("equal?", EqualFunctions.Equal)
           .Define("quote", Quote.Instance)
           .Define("define", Define.Instance)
           .Define("set!", Set.Instance)
           .Define("begin", Begin.Instance)
           .Define("call-with-current-continuation", CallCC.Instance)
           .Define("eval", Eval.Instance)
           .Define("env", Env.Instance);
     env = DebugFunctions.AddTo(env);
     env = Macro.AddTo(env);
     env = VectorFunctions.AddTo(env);
     return(env);
 }