Beispiel #1
0
        public static ISExpression Unflatten(this IEnumerable <ISExpression> ss)
        {
            ISExpression c = AtomHelper.Nil;

            ss = ss.Reverse();
            foreach (var s in ss)
            {
                c = AtomHelper.CreateCons(s, c);
            }
            return(c);
        }
Beispiel #2
0
        private static void CreatePrimitive(string name, Procedure p, IEnvironment e, ISchemeVM vm)
        {
            var def = AtomHelper.CreateList(
                AtomHelper.SymbolFromString("define"),
                AtomHelper.SymbolFromString(name),
                AtomHelper.CreateList(AtomHelper.SymbolFromString("lambda"), AtomHelper.Nil, p)
                );
            var inst = SchemeCompiler.Compile(vm, def);

            var tmp = vm.E;

            vm.E = e;
            vm.Execute(inst);
            vm.E = tmp;
        }