- "car", AO_LISP_LEXPR, builtin_car,
- "cdr", AO_LISP_LEXPR, builtin_cdr,
- "cons", AO_LISP_LEXPR, builtin_cons,
- "quote", AO_LISP_NLAMBDA,builtin_quote,
- "set", AO_LISP_LEXPR, builtin_set,
- "setq", AO_LISP_MACRO, builtin_setq,
- "print", AO_LISP_LEXPR, builtin_print,
- "+", AO_LISP_LEXPR, builtin_plus,
- "-", AO_LISP_LEXPR, builtin_minus,
- "*", AO_LISP_LEXPR, builtin_times,
- "/", AO_LISP_LEXPR, builtin_divide,
- "%", AO_LISP_LEXPR, builtin_mod
+ { .name = "eval", .args = AO_LISP_FUNC_F_LAMBDA, .func = builtin_eval },
+ { .name = "read", .args = AO_LISP_FUNC_F_LAMBDA, .func = builtin_read },
+ { .name = "lambda", .args = AO_LISP_FUNC_NLAMBDA, .func = builtin_lambda },
+ { .name = "lexpr", .args = AO_LISP_FUNC_NLAMBDA, .func = builtin_lexpr },
+ { .name = "nlambda", .args = AO_LISP_FUNC_NLAMBDA, .func = builtin_nlambda },
+ { .name = "macro", .args = AO_LISP_FUNC_NLAMBDA, .func = builtin_macro },
+ { .name = "car", .args = AO_LISP_FUNC_F_LAMBDA, .func = builtin_car },
+ { .name = "cdr", .args = AO_LISP_FUNC_F_LAMBDA, .func = builtin_cdr },
+ { .name = "cons", .args = AO_LISP_FUNC_F_LAMBDA, .func = builtin_cons },
+ { .name = "last", .args = AO_LISP_FUNC_F_LAMBDA, .func = builtin_last },
+ { .name = "length", .args = AO_LISP_FUNC_F_LAMBDA, .func = builtin_length },
+ { .name = "quote", .args = AO_LISP_FUNC_NLAMBDA, .func = builtin_quote },
+ { .name = "set", .args = AO_LISP_FUNC_F_LAMBDA, .func = builtin_set },
+ { .name = "setq", .args = AO_LISP_FUNC_MACRO, .func = builtin_setq },
+ { .name = "cond", .args = AO_LISP_FUNC_NLAMBDA, .func = builtin_cond },
+ { .name = "progn", .args = AO_LISP_FUNC_NLAMBDA, .func = builtin_progn },
+ { .name = "while", .args = AO_LISP_FUNC_NLAMBDA, .func = builtin_while },
+ { .name = "print", .args = AO_LISP_FUNC_F_LEXPR, .func = builtin_print },
+ { .name = "patom", .args = AO_LISP_FUNC_F_LEXPR, .func = builtin_patom },
+ { .name = "+", .args = AO_LISP_FUNC_F_LEXPR, .func = builtin_plus },
+ { .name = "-", .args = AO_LISP_FUNC_F_LEXPR, .func = builtin_minus },
+ { .name = "*", .args = AO_LISP_FUNC_F_LEXPR, .func = builtin_times },
+ { .name = "/", .args = AO_LISP_FUNC_F_LEXPR, .func = builtin_divide },
+ { .name = "%", .args = AO_LISP_FUNC_F_LEXPR, .func = builtin_mod },
+ { .name = "=", .args = AO_LISP_FUNC_F_LEXPR, .func = builtin_equal },
+ { .name = "<", .args = AO_LISP_FUNC_F_LEXPR, .func = builtin_less },
+ { .name = ">", .args = AO_LISP_FUNC_F_LEXPR, .func = builtin_greater },
+ { .name = "<=", .args = AO_LISP_FUNC_F_LEXPR, .func = builtin_less_equal },
+ { .name = ">=", .args = AO_LISP_FUNC_F_LEXPR, .func = builtin_greater_equal },
+ { .name = "pack", .args = AO_LISP_FUNC_F_LAMBDA, .func = builtin_pack },
+ { .name = "unpack", .args = AO_LISP_FUNC_F_LAMBDA, .func = builtin_unpack },
+ { .name = "flush", .args = AO_LISP_FUNC_F_LAMBDA, .func = builtin_flush },
+ { .name = "delay", .args = AO_LISP_FUNC_F_LAMBDA, .func = builtin_delay },
+ { .name = "led", .args = AO_LISP_FUNC_F_LEXPR, .func = builtin_led },
+ { .name = "save", .args = AO_LISP_FUNC_F_LAMBDA, .func = builtin_save },
+ { .name = "restore", .args = AO_LISP_FUNC_F_LAMBDA, .func = builtin_restore },