altos/lisp: Finish first pass through r7rs
[fw/altos] / src / lisp / ao_lisp_rep.c
index 3be95d44d89ecda6eaea21b86a715d7fd97b1a9e..43cc387f9abb13ce3e36b0b5acf264bd4ca5971c 100644 (file)
@@ -20,13 +20,15 @@ ao_lisp_read_eval_print(void)
        ao_poly in, out = AO_LISP_NIL;
        for(;;) {
                in = ao_lisp_read();
-               if (in == _ao_lisp_atom_eof || in == AO_LISP_NIL)
+               if (in == _ao_lisp_atom_eof)
                        break;
                out = ao_lisp_eval(in);
                if (ao_lisp_exception) {
+                       if (ao_lisp_exception & AO_LISP_EXIT)
+                               break;
                        ao_lisp_exception = 0;
                } else {
-                       ao_lisp_poly_print(out);
+                       ao_lisp_poly_write(out);
                        putchar ('\n');
                }
        }