From 014c61e860fce07cceee60efecd949a17e53f2ae Mon Sep 17 00:00:00 2001
From: Kaz Kylheku <kaz@kylheku.com>
Date: Wed, 13 Feb 2019 06:54:42 -0800
Subject: optimizing diff, isec and uni for non-lists.

Also, these functions now support hashes.

* eval.c (eval_init): Register only the deprecated set-diff to
the set_diff function. The diff intrinsic is now going to the
new function named diff.

* lib.c (diff): New function.
(isec, uni): Rewritten to use seq_iter_t.

* lib.h (diff): Declared.

* txr.1: Documentation updated.
---
 eval.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

(limited to 'eval.c')

diff --git a/eval.c b/eval.c
index f9150b8c..d1013871 100644
--- a/eval.c
+++ b/eval.c
@@ -6014,7 +6014,6 @@ void eval_init(void)
   val not_null_f = func_n1(not_null);
   val me_each_f = func_n2(me_each);
   val me_for_f = func_n2(me_for);
-  val diff_f = func_n4o(set_diff, 2);
   val length_f = func_n1(length);
 
   protect(&top_vb, &top_fb, &top_mb, &top_smb, &special, &builtin, &dyn_env,
@@ -6747,8 +6746,8 @@ void eval_init(void)
   reg_fun(intern(lit("find-max"), user_package), func_n3o(find_max, 1));
   reg_fun(intern(lit("find-min"), user_package), func_n3o(find_min, 1));
   reg_fun(intern(lit("multi-sort"), user_package), func_n3o(multi_sort, 2));
-  reg_fun(intern(lit("set-diff"), user_package), diff_f);
-  reg_fun(intern(lit("diff"), user_package), diff_f);
+  reg_fun(intern(lit("set-diff"), user_package), func_n4o(set_diff, 2));
+  reg_fun(intern(lit("diff"), user_package), func_n4o(diff, 2));
   reg_fun(intern(lit("isec"), user_package), func_n4o(isec, 2));
   reg_fun(intern(lit("uni"), user_package), func_n4o(uni, 2));
 
-- 
cgit v1.2.3