summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-12-30 02:42:18 -0800
committerKaz Kylheku <kaz@kylheku.com>2017-12-30 02:42:18 -0800
commit422eda12b8a931039a5bf613a8c260c3d6853403 (patch)
treea24ace5c0fd241dc5dfca5b6db21cffdcd1f741d /eval.c
parentfb7a02f021e153fa6769a5e47dda303560dfd8ff (diff)
downloadtxr-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.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/eval.c b/eval.c
index 0ffe88f4..81c62d11 100644
--- a/eval.c
+++ b/eval.c
@@ -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));