diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2012-03-16 21:43:51 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2012-03-16 21:43:51 -0700 |
commit | 8bb336298d0bf4e165fa03f7f2a219ddad6e466f (patch) | |
tree | 2b102c6c3fd927a4589b4b1cf75099c9cdc97384 /eval.c | |
parent | 5e765926b07b544f9dd4860af5f0e669432434ea (diff) | |
download | txr-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.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -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); |