diff options
author | Teddy <ted.sybil@gmail.com> | 2013-08-04 23:35:59 +0800 |
---|---|---|
committer | Teddy <ted.sybil@gmail.com> | 2013-08-04 23:35:59 +0800 |
commit | 645549b8a42844fc5a8042a4808c8ebf5050d7da (patch) | |
tree | 6f96ef92e16f332a6eb3860450404903865a12fe /eval.cpp | |
parent | acb298c7f864f9862859320555b416c97632d2fa (diff) |
added support for `cons`, `car`, `cdr`
Diffstat (limited to 'eval.cpp')
-rw-r--r-- | eval.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -21,6 +21,9 @@ void Evaluator::add_builtin_routines() { ADD_ENTRY("<", new BuiltinProcObj(builtin_lt, "<")); ADD_ENTRY("=", new BuiltinProcObj(builtin_arithmetic_eq, "=")); ADD_ENTRY("display", new BuiltinProcObj(builtin_display, "display")); + ADD_ENTRY("cons", new BuiltinProcObj(builtin_cons, "cons")); + ADD_ENTRY("car", new BuiltinProcObj(builtin_car, "car")); + ADD_ENTRY("cdr", new BuiltinProcObj(builtin_cdr, "cdr")); ADD_ENTRY("if", new SpecialOptIf()); ADD_ENTRY("lambda", new SpecialOptLambda()); ADD_ENTRY("define", new SpecialOptDefine()); @@ -79,7 +82,7 @@ EvalObj *Evaluator::run_expr(Cons *prog) { RetAddr *ret_addr = static_cast<RetAddr*>(*top_ptr); if (!ret_addr->addr) { - Cons *nexp = cont->proc_body->cdr; + Cons *nexp = TO_CONS(cont->proc_body->cdr); cont->proc_body = nexp; if (nexp == empty_list) { |