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); }
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); }
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); }