+void
+ao_lisp_frame_print(ao_poly p)
+{
+ struct ao_lisp_frame *frame = ao_lisp_poly_frame(p);
+ int f;
+
+ printf ("{");
+ if (frame) {
+ if (frame->type & AO_LISP_FRAME_PRINT)
+ printf("recurse...");
+ else {
+ frame->type |= AO_LISP_FRAME_PRINT;
+ for (f = 0; f < frame->num; f++) {
+ if (f != 0)
+ printf(", ");
+ ao_lisp_poly_print(frame->vals[f].atom);
+ printf(" = ");
+ ao_lisp_poly_print(frame->vals[f].val);
+ }
+ if (frame->prev)
+ ao_lisp_poly_print(frame->prev);
+ frame->type &= ~AO_LISP_FRAME_PRINT;
+ }
+ }
+ printf("}");
+}
+
+ao_poly *