summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2011-12-12 17:42:58 -0800
committerKaz Kylheku <kaz@kylheku.com>2011-12-12 17:42:58 -0800
commit81f71cdbf8446246837665cc6f13e3da95a7db58 (patch)
tree3a0078cd114335bf413511089e2db17309878f70 /eval.c
parent1c31934c8294fec086bcfcd43479a3a399234ff7 (diff)
downloadtxr-81f71cdbf8446246837665cc6f13e3da95a7db58.tar.gz
txr-81f71cdbf8446246837665cc6f13e3da95a7db58.tar.bz2
txr-81f71cdbf8446246837665cc6f13e3da95a7db58.zip
* arith.c (expt): New function.
* eval.c (eval_init): Registering new intrinsic functions, reduce-left, reduce-right and expt. * lib.c (minusv): Return one instead of num(1). (exptv, reduce_right): New functions. * lib.h (expt, exptv, reduce_right): Declared. * txr.1: Blank sections for new functions.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index 81ece344..9c6cdf87 100644
--- a/eval.c
+++ b/eval.c
@@ -1130,6 +1130,8 @@ void eval_init(void)
reg_fun(intern(lit("mapcar"), user_package), func_n1v(mapcarv));
reg_fun(intern(lit("mappend"), user_package), func_n1v(mappendv));
reg_fun(apply_s, func_n2(apply_intrinsic));
+ reg_fun(intern(lit("reduce-left"), user_package), func_n4(reduce_left));
+ reg_fun(intern(lit("reduce-right"), user_package), func_n4(reduce_right));
reg_fun(intern(lit("second"), user_package), func_n1(second));
reg_fun(intern(lit("third"), user_package), func_n1(third));
@@ -1156,6 +1158,7 @@ void eval_init(void)
reg_fun(intern(lit("*"), user_package), func_n0v(mulv));
reg_fun(intern(lit("trunc"), user_package), func_n2(trunc));
reg_fun(intern(lit("mod"), user_package), func_n2(mod));
+ reg_fun(intern(lit("expt"), user_package), func_n0v(exptv));
reg_fun(intern(lit("fixnump"), user_package), func_n1(fixnump));
reg_fun(intern(lit("bignump"), user_package), func_n1(bignump));