- else if (rt == AO_LISP_INT && ct == AO_LISP_INT) {
- int r = ao_lisp_poly_int(ret);
- int c = ao_lisp_poly_int(car);
+static const struct ao_lisp_funcs ao_lisp_funcs[AO_LISP_NUM_TYPE] = {
+ [AO_LISP_CONS] = {
+ .print = ao_lisp_cons_print,
+ .patom = ao_lisp_cons_patom,
+ },
+ [AO_LISP_STRING] = {
+ .print = ao_lisp_string_print,
+ .patom = ao_lisp_string_patom,
+ },
+ [AO_LISP_INT] = {
+ .print = ao_lisp_int_print,
+ .patom = ao_lisp_int_print,
+ },
+ [AO_LISP_ATOM] = {
+ .print = ao_lisp_atom_print,
+ .patom = ao_lisp_atom_print,
+ },
+ [AO_LISP_BUILTIN] = {
+ .print = ao_lisp_builtin_print,
+ .patom = ao_lisp_builtin_print,
+ },
+ [AO_LISP_FRAME] = {
+ .print = ao_lisp_frame_print,
+ .patom = ao_lisp_frame_print,
+ },
+ [AO_LISP_LAMBDA] = {
+ .print = ao_lisp_lambda_print,
+ .patom = ao_lisp_lambda_print,
+ },
+ [AO_LISP_STACK] = {
+ .print = ao_lisp_stack_print,
+ .patom = ao_lisp_stack_print,
+ },
+};