}
void
-ao_scheme_vector_write(ao_poly v)
+ao_scheme_vector_write(ao_poly v, bool write)
{
struct ao_scheme_vector *vector = ao_scheme_poly_vector(v);
unsigned int i;
-
- printf("#(");
- for (i = 0; i < vector->length; i++) {
- if (i != 0)
- printf(" ");
- if (vector->vals[i] == v)
- printf ("...");
- else
- ao_scheme_poly_write(vector->vals[i]);
- }
- printf(")");
-}
-
-void
-ao_scheme_vector_display(ao_poly v)
-{
- struct ao_scheme_vector *vector = ao_scheme_poly_vector(v);
- unsigned int i;
-
- for (i = 0; i < vector->length; i++) {
- if (vector->vals[i] == v)
- printf("...");
- else
- ao_scheme_poly_display(vector->vals[i]);
+ int was_marked = 0;
+
+ ao_scheme_print_start();
+ was_marked = ao_scheme_print_mark_addr(vector);
+ if (was_marked) {
+ printf ("...");
+ } else {
+ printf("#(");
+ for (i = 0; i < vector->length; i++) {
+ if (i != 0)
+ printf(" ");
+ ao_scheme_poly_write(vector->vals[i], write);
+ }
+ printf(")");
}
+ if (ao_scheme_print_stop() && !was_marked)
+ ao_scheme_print_clear_addr(vector);
}
static int32_t
if (ao_scheme_exception)
return NULL;
- ao_scheme_cons_stash(0, cons);
+ ao_scheme_cons_stash(cons);
vector = ao_scheme_vector_alloc(length, AO_SCHEME_NIL);
- cons = ao_scheme_cons_fetch(0);
+ cons = ao_scheme_cons_fetch();
if (!vector)
return NULL;
i = 0;
struct ao_scheme_cons *cons = NULL;
for (i = length; i-- > 0;) {
- ao_scheme_poly_stash(2, ao_scheme_vector_poly(vector));
+ ao_scheme_vector_stash(vector);
cons = ao_scheme_cons_cons(vector->vals[i], ao_scheme_cons_poly(cons));
- vector = ao_scheme_poly_vector(ao_scheme_poly_fetch(2));
+ vector = ao_scheme_vector_fetch();
if (!cons)
return NULL;
}