summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2014-02-02 15:35:18 -0800
committerKaz Kylheku <kaz@kylheku.com>2014-02-02 15:37:55 -0800
commita5c639d6bbb5c2bb6720fa69086f9187452192f6 (patch)
treedca305b48314270bb35f567c956c8f68564e0f6f /eval.c
parent1d6ad5892120dd0ce3f1947ee87fe343fc932f0d (diff)
downloadtxr-a5c639d6bbb5c2bb6720fa69086f9187452192f6.tar.gz
txr-a5c639d6bbb5c2bb6720fa69086f9187452192f6.tar.bz2
txr-a5c639d6bbb5c2bb6720fa69086f9187452192f6.zip
Adding list* since we get it "for free" thanks to the
new helper function that supports apply. * eval.c (list_star_intrinsic): New static function. (eval_init): Register list_star_intrinsic as list*. * txr.1: Document list*.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index 92922bd7..cff8b997 100644
--- a/eval.c
+++ b/eval.c
@@ -435,6 +435,11 @@ static val apply_intrinsic(val fun, val args)
return apply(fun, apply_frob_args(args), cons(apply_s, nil));
}
+static val list_star_intrinsic(val args)
+{
+ return apply_frob_args(args);
+}
+
static val do_eval(val form, val env, val ctx_form,
val (*lookup)(val env, val sym));
@@ -2380,6 +2385,7 @@ void eval_init(void)
reg_fun(append_s, func_n0v(appendv));
reg_fun(intern(lit("append*"), user_package), func_n0v(lazy_appendv));
reg_fun(list_s, func_n0v(identity));
+ reg_fun(intern(lit("list*"), user_package), func_n1v(list_star_intrinsic));
reg_fun(intern(lit("identity"), user_package), identity_f);
reg_fun(intern(lit("typeof"), user_package), func_n1(typeof));