return cons;
}
+struct ao_lisp_cons *
+ao_lisp_cons_cdr(struct ao_lisp_cons *cons)
+{
+ ao_poly cdr = cons->cdr;
+ if (cdr == AO_LISP_NIL)
+ return NULL;
+ if (ao_lisp_poly_type(cdr) != AO_LISP_CONS) {
+ (void) ao_lisp_error(AO_LISP_INVALID, "improper list");
+ return NULL;
+ }
+ return ao_lisp_poly_cons(cdr);
+}
+
ao_poly
ao_lisp__cons(ao_poly car, ao_poly cdr)
{
void
ao_lisp_cons_free(struct ao_lisp_cons *cons)
{
+#if DBG_FREE_CONS
+ ao_lisp_cons_check(cons);
+#endif
while (cons) {
ao_poly cdr = cons->cdr;
cons->cdr = ao_lisp_cons_poly(ao_lisp_cons_free_list);
}
void
-ao_lisp_cons_print(ao_poly c)
+ao_lisp_cons_write(ao_poly c)
{
struct ao_lisp_cons *cons = ao_lisp_poly_cons(c);
int first = 1;
while (cons) {
if (!first)
printf(" ");
- ao_lisp_poly_print(cons->car);
+ ao_lisp_poly_write(cons->car);
c = cons->cdr;
if (ao_lisp_poly_type(c) == AO_LISP_CONS) {
cons = ao_lisp_poly_cons(c);
first = 0;
} else {
printf(" . ");
- ao_lisp_poly_print(c);
+ ao_lisp_poly_write(c);
cons = NULL;
}
}
}
void
-ao_lisp_cons_patom(ao_poly c)
+ao_lisp_cons_display(ao_poly c)
{
struct ao_lisp_cons *cons = ao_lisp_poly_cons(c);
while (cons) {
- ao_lisp_poly_patom(cons->car);
+ ao_lisp_poly_display(cons->car);
cons = ao_lisp_poly_cons(cons->cdr);
}
}