diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-12-30 02:42:18 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-12-30 02:42:18 -0800 |
commit | 422eda12b8a931039a5bf613a8c260c3d6853403 (patch) | |
tree | a24ace5c0fd241dc5dfca5b6db21cffdcd1f741d /eval.c | |
parent | fb7a02f021e153fa6769a5e47dda303560dfd8ff (diff) | |
download | txr-422eda12b8a931039a5bf613a8c260c3d6853403.tar.gz txr-422eda12b8a931039a5bf613a8c260c3d6853403.tar.bz2 txr-422eda12b8a931039a5bf613a8c260c3d6853403.zip |
New methods rplaca and rplacd.
* eval.c (eval_init): Register rplaca and rplacd using new
rplaca_s and rplacd_s symbol variables.
* lib.c (rplaca_s, rplacd_s): New symbol variables.
(rplaca): Handle struct object via rplaca method, if it has
one, otherwise lambda-set, if it has that, or else error
out.
(rplacd): Handle struct object via rplacd method.
* lib.h (rplaca_s, rplacd_s): Declared.
* txr.1: Documented rplaca and rplacd methods.
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -5847,8 +5847,8 @@ void eval_init(void) reg_fun(intern(lit("lcons-fun"), user_package), func_n1(lcons_fun)); reg_fun(car_s, car_f); reg_fun(cdr_s, cdr_f); - reg_fun(intern(lit("rplaca"), user_package), func_n2(rplaca)); - reg_fun(intern(lit("rplacd"), user_package), func_n2(rplacd)); + reg_fun(rplaca_s, func_n2(rplaca)); + reg_fun(rplacd_s, func_n2(rplacd)); reg_fun(intern(lit("rplaca"), system_package), func_n2(sys_rplaca)); reg_fun(intern(lit("rplacd"), system_package), func_n2(sys_rplacd)); reg_fun(intern(lit("first"), user_package), func_n1(car)); |