summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2012-03-16 21:43:51 -0700
committerKaz Kylheku <kaz@kylheku.com>2012-03-16 21:43:51 -0700
commit8bb336298d0bf4e165fa03f7f2a219ddad6e466f (patch)
tree2b102c6c3fd927a4589b4b1cf75099c9cdc97384 /eval.c
parent5e765926b07b544f9dd4860af5f0e669432434ea (diff)
downloadtxr-8bb336298d0bf4e165fa03f7f2a219ddad6e466f.tar.gz
txr-8bb336298d0bf4e165fa03f7f2a219ddad6e466f.tar.bz2
txr-8bb336298d0bf4e165fa03f7f2a219ddad6e466f.zip
* eval.c (eval_init): New intrinsic functions
chain, andf, orf, iff. * lib.c (chainv): New function. (do_and, do_or): Generalized to handle functions of any arguments via apply. (andf, orf): Turn do_and and do_or into variadic function instead of a monadic function. (do_iff): New static function. (andv, orv, iff): New functions. * lib.h (chainv, andv, orv, iff): New functions declared. * txr.1: Doc stubs created. * txr.vim: Updated.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index b02f25b2..6cb8721e 100644
--- a/eval.c
+++ b/eval.c
@@ -2227,6 +2227,11 @@ void eval_init(void)
reg_fun(intern(lit("eval"), user_package), func_n2o(eval_intrinsic, 1));
+ reg_fun(intern(lit("chain"), user_package), func_n0v(chainv));
+ reg_fun(intern(lit("andf"), user_package), func_n0v(andv));
+ reg_fun(intern(lit("orf"), user_package), func_n0v(orv));
+ reg_fun(intern(lit("iff"), user_package), func_n3o(iff, 2));
+
reg_var(intern(lit("*stdout*"), user_package), &std_output);
reg_var(intern(lit("*stddebug*"), user_package), &std_debug);
reg_var(intern(lit("*stdin*"), user_package), &std_input);