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