From b39b7e8173e6f2c74b69ee0c5b4c448a154b5078 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sun, 28 Jun 2020 13:34:53 -0700 Subject: New producting each operator family. * lisplib.c (each_prod_instantiate, each_prod_set_entries): New static functions. (lisplib_init): Register autoload of each-prod.tl via new functions. * share/txr/stdlib/each-prod.tl: New file. * txr.1: Documented. Also, under the existing collect-each family of operators, added the equivalence to mapping with lambda to help clarify the semantics. --- lisplib.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'lisplib.c') diff --git a/lisplib.c b/lisplib.c index be28a180..3478cd1c 100644 --- a/lisplib.c +++ b/lisplib.c @@ -821,6 +821,23 @@ static val copy_file_set_entries(val dlt, val fun) return nil; } +static val each_prod_instantiate(val set_fun) +{ + funcall1(set_fun, nil); + load(scat2(stdlib_path, lit("each-prod"))); + return nil; +} + +static val each_prod_set_entries(val dlt, val fun) +{ + val name[] = { + lit("each-prod"), lit("collect-each-prod"), lit("append-each-prod"), + lit("each-prod*"), lit("collect-each-prod*"), lit("append-each-prod*"), + nil + }; + set_dlt_entries(dlt, name, fun); + return nil; +} val dlt_register(val dlt, val (*instantiate)(val), @@ -874,6 +891,7 @@ void lisplib_init(void) dlt_register(dl_table, save_exe_instantiate, save_exe_set_entries); dlt_register(dl_table, defset_instantiate, defset_set_entries); dlt_register(dl_table, copy_file_instantiate, copy_file_set_entries); + dlt_register(dl_table, each_prod_instantiate, each_prod_set_entries); reg_fun(intern(lit("try-load"), system_package), func_n1(lisplib_try_load)); } -- cgit v1.2.3