altos/scheme: Add builtin list-tail
[fw/altos] / src / scheme / ao_scheme_cons.c
index 7976250bee89fb683bd8e6ad7ba678c38dc2e773..a9ff5acdb1a5735a1f07c7fa3e0bb0e3ae5d2524 100644 (file)
@@ -24,7 +24,7 @@ static void cons_mark(void *addr)
                ao_scheme_poly_mark(cons->car, 1);
                if (!cdr)
                        break;
-               if (!AO_SCHEME_IS_CONS(cdr)) {
+               if (!ao_scheme_is_cons(cdr)) {
                        ao_scheme_poly_mark(cdr, 0);
                        break;
                }
@@ -58,7 +58,7 @@ static void cons_move(void *addr)
                cdr = cons->cdr;
                if (!cdr)
                        break;
-               if (!AO_SCHEME_IS_CONS(cdr)) {
+               if (!ao_scheme_is_cons(cdr)) {
                        (void) ao_scheme_poly_move(&cons->cdr, 0);
                        break;
                }
@@ -92,11 +92,11 @@ ao_scheme_cons_cons(ao_poly car, ao_poly cdr)
                cons = ao_scheme_cons_free_list;
                ao_scheme_cons_free_list = ao_scheme_poly_cons(cons->cdr);
        } else {
-               ao_scheme_poly_stash(0, car);
-               ao_scheme_poly_stash(1, cdr);
+               ao_scheme_poly_stash(car);
+               ao_scheme_poly_stash(cdr);
                cons = ao_scheme_alloc(sizeof (struct ao_scheme_cons));
-               cdr = ao_scheme_poly_fetch(1);
-               car = ao_scheme_poly_fetch(0);
+               cdr = ao_scheme_poly_fetch();
+               car = ao_scheme_poly_fetch();
                if (!cons)
                        return NULL;
        }
@@ -111,7 +111,7 @@ ao_scheme_cons_cdr(struct ao_scheme_cons *cons)
        ao_poly cdr = cons->cdr;
        if (cdr == AO_SCHEME_NIL)
                return NULL;
-       if (!AO_SCHEME_IS_CONS(cdr)) {
+       if (!ao_scheme_is_cons(cdr)) {
                (void) ao_scheme_error(AO_SCHEME_INVALID, "improper cdr %v", cdr);
                return NULL;
        }
@@ -119,7 +119,7 @@ ao_scheme_cons_cdr(struct ao_scheme_cons *cons)
 }
 
 ao_poly
-ao_scheme__cons(ao_poly car, ao_poly cdr)
+ao_scheme_cons(ao_poly car, ao_poly cdr)
 {
        return ao_scheme_cons_poly(ao_scheme_cons_cons(car, cdr));
 }
@@ -134,13 +134,13 @@ ao_scheme_cons_copy(struct ao_scheme_cons *cons)
                struct ao_scheme_cons   *new;
                ao_poly cdr;
 
-               ao_scheme_cons_stash(0, cons);
-               ao_scheme_cons_stash(1, head);
-               ao_scheme_poly_stash(0, ao_scheme_cons_poly(tail));
+               ao_scheme_cons_stash(cons);
+               ao_scheme_cons_stash(head);
+               ao_scheme_cons_stash(tail);
                new = ao_scheme_alloc(sizeof (struct ao_scheme_cons));
-               cons = ao_scheme_cons_fetch(0);
-               head = ao_scheme_cons_fetch(1);
-               tail = ao_scheme_poly_cons(ao_scheme_poly_fetch(0));
+               tail = ao_scheme_cons_fetch();
+               head = ao_scheme_cons_fetch();
+               cons = ao_scheme_cons_fetch();
                if (!new)
                        return AO_SCHEME_NIL;
                new->car = cons->car;
@@ -151,7 +151,7 @@ ao_scheme_cons_copy(struct ao_scheme_cons *cons)
                        tail->cdr = ao_scheme_cons_poly(new);
                tail = new;
                cdr = cons->cdr;
-               if (!AO_SCHEME_IS_CONS(cdr)) {
+               if (!ao_scheme_is_cons(cdr)) {
                        tail->cdr = cdr;
                        break;
                }
@@ -203,7 +203,7 @@ ao_scheme_cons_write(ao_poly c, bool write)
                written++;
 
                cdr = cons->cdr;
-               if (!AO_SCHEME_IS_CONS(cdr)) {
+               if (!ao_scheme_is_cons(cdr)) {
                        printf(" . ");
                        ao_scheme_poly_write(cdr, write);
                        break;