Changeset 4069
- Timestamp:
- 09/26/03 14:21:22 (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/j/src/org/armedbear/lisp/Primitives.java
r4066 r4069 3 3 * 4 4 * Copyright (C) 2002-2003 Peter Graves 5 * $Id: Primitives.java,v 1.44 0 2003-09-26 01:10:00piso Exp $5 * $Id: Primitives.java,v 1.441 2003-09-26 14:21:22 piso Exp $ 6 6 * 7 7 * This program is free software; you can redistribute it and/or … … 2814 2814 2815 2815 private static final LispObject _let(LispObject args, Environment env, 2816 boolean sequential) throws ConditionThrowable 2816 boolean sequential) 2817 throws ConditionThrowable 2817 2818 { 2818 2819 LispObject varList = checkList(args.car()); … … 2821 2822 if (varList != NIL) { 2822 2823 Environment oldDynEnv = thread.getDynamicEnvironment(); 2823 Environment ext = new Environment(env); 2824 Environment evalEnv = sequential ? ext : env; 2825 for (int i = varList.length(); i-- > 0;) { 2826 LispObject obj = varList.car(); 2827 varList = varList.cdr(); 2828 if (obj instanceof Cons) { 2829 bind(checkSymbol(obj.car()), 2830 eval(obj.cadr(), evalEnv, thread), 2831 ext); 2832 } else 2833 bind(checkSymbol(obj), NIL, ext); 2834 } 2835 LispObject body = args.cdr(); 2836 while (body != NIL) { 2837 result = eval(body.car(), ext, thread); 2838 body = body.cdr(); 2839 } 2840 thread.setDynamicEnvironment(oldDynEnv); 2824 try { 2825 Environment ext = new Environment(env); 2826 Environment evalEnv = sequential ? ext : env; 2827 for (int i = varList.length(); i-- > 0;) { 2828 LispObject obj = varList.car(); 2829 varList = varList.cdr(); 2830 if (obj instanceof Cons) { 2831 bind(checkSymbol(obj.car()), 2832 eval(obj.cadr(), evalEnv, thread), 2833 ext); 2834 } else 2835 bind(checkSymbol(obj), NIL, ext); 2836 } 2837 LispObject body = args.cdr(); 2838 while (body != NIL) { 2839 result = eval(body.car(), ext, thread); 2840 body = body.cdr(); 2841 } 2842 } 2843 finally { 2844 thread.setDynamicEnvironment(oldDynEnv); 2845 } 2841 2846 } else { 2842 2847 LispObject body = args.cdr();
Note: See TracChangeset
for help on using the changeset viewer.