void lval_print(lval* v) { switch (v->type) { case LVAL_FUN: if (v->builtin) { printf(">builtin>"); } else { printf("(\\ "); lval_print(v->formals); putchar(' '); lval_print(v->body); putchar(')'); } break; case LVAL_NUM: printf("%li", v->num); break; case LVAL_ERR: printf("Error: %s", v->err); break; case LVAL_SYM: printf("%s", v->sym); break; case LVAL_SEXPR: lval_print_expr(v, '(', ')'); break; case LVAL_QEXPR: lval_print_expr(v, '{', '}'); break; } }
int lval_print(lval* v) { switch (v->type) { case LVAL_NUM: printf("%li", v->num); break; case LVAL_ERR: printf("Error: %s", v->err); break; case LVAL_SYM: printf("%s", v->sym); break; case LVAL_STR: lval_print_str(v, "\"", "\""); break; case LVAL_FUN: if (v->builtin) { printf("<builtin '%s'>", v->sym); } else { printf("(\\ "); lval_print(v->formals); putchar(' '); lval_print(v->body); putchar(')'); } break; case LVAL_SEXPR: return lval_print_expr(v, '(', ')'); case LVAL_QEXPR: return lval_print_expr(v, '{', '}'); default: return 0; } return 1; }