altos/lisp: split set/def. Add def support to lambdas
authorKeith Packard <keithp@keithp.com>
Fri, 1 Dec 2017 21:40:23 +0000 (15:40 -0600)
committerKeith Packard <keithp@keithp.com>
Fri, 1 Dec 2017 21:40:23 +0000 (15:40 -0600)
commitc31744299e5a4342bbe26d3735ee2d8f09192ae9
tree108153f1d01c56800d6e4dc0c56dbcce979717be
parent98923ae1189f062b8b94120d47a56892db25493f
altos/lisp: split set/def. Add def support to lambdas

In scheme, set can only re-define existing variables while def cannot
redefine existing variables in lambda context. Def within lambda
creates a new variable at the nearest enclosing scope.

Signed-off-by: Keith Packard <keithp@keithp.com>
12 files changed:
src/lisp/ao_lisp.h
src/lisp/ao_lisp_atom.c
src/lisp/ao_lisp_builtin.c
src/lisp/ao_lisp_builtin.txt
src/lisp/ao_lisp_const.lisp
src/lisp/ao_lisp_eval.c
src/lisp/ao_lisp_frame.c
src/lisp/ao_lisp_make_const.c
src/lisp/ao_lisp_mem.c
src/lisp/ao_lisp_stack.c
src/test/ao_lisp_os.h
src/test/hanoi.lisp