예제 #1
0
        public static Object With(Cons args, Environment environment)
        {
            string v = //"//(with " + Printer.ConsToString(args) + ")" + NewLine +
                       "{" + NewLine;
            Cons        bindings         = (Cons)args.First();
            Environment localEnvironment = new Environment(environment);

            while ((bindings != null) && (bindings.Length() > 1))
            {
                v       += GenerateAssignLocal((Symbol)bindings.First(), Generate(bindings.Second(), environment), localEnvironment);
                bindings = (Cons)bindings.Cddr();
            }

            foreach (object item in (Cons)args.Cdr())
            {
                v += Generate(item, localEnvironment);
            }
            return(v + "}");
        }