summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--eval.c46
-rw-r--r--lisplib.c3
-rw-r--r--protsym.c286
-rw-r--r--share/txr/stdlib/op.tl18
4 files changed, 165 insertions, 188 deletions
diff --git a/eval.c b/eval.c
index 7957e20e..ba4c89c6 100644
--- a/eval.c
+++ b/eval.c
@@ -94,8 +94,7 @@ val uw_protect_s, return_s, return_from_s, sys_abscond_from_s, block_star_s;
val list_s, list_star_s, append_s, apply_s, sys_apply_s, iapply_s;
val gen_s, gun_s, generate_s, rest_s, plus_s;
val promise_s, promise_forced_s, promise_inprogress_s, force_s;
-val op_s, ap_s, identity_s, apf_s, ipf_s;
-val ret_s, aret_s;
+val op_s, identity_s;
val hash_lit_s, hash_construct_s, struct_lit_s, qref_s, uref_s;
val vector_lit_s, vec_list_s;
val macro_time_s, macrolet_s;
@@ -3783,34 +3782,6 @@ static val me_op(val form, val menv)
}
}
-static val me_ap(val form, val menv)
-{
- return list(apf_s, cons(op_s, rest(form)), nao);
-}
-
-static val me_ip(val form, val menv)
-{
- return list(ipf_s, cons(op_s, rest(form)), nao);
-}
-
-static val me_ado(val form, val menv)
-{
- return list(apf_s, cons(do_s, rest(form)), nao);
-}
-
-static val me_ido(val form, val menv)
-{
- return list(ipf_s, cons(do_s, rest(form)), nao);
-}
-
-static val me_ret_aret(val form, val menv)
-{
- val sym = if3(eq(car(form), ret_s), op_s, ap_s);
- return list(sym, identity_s, cons(progn_s,
- cons(list(var_s, rest_s, nao),
- rest(form))), nao);
-}
-
static val me_flet_labels(val form, val menv)
{
val body = form;
@@ -6100,12 +6071,7 @@ void eval_init(void)
promise_inprogress_s = intern(lit("promise-inprogress"), system_package);
force_s = intern(lit("force"), user_package);
op_s = intern(lit("op"), user_package);
- ap_s = intern(lit("ap"), user_package);
do_s = intern(lit("do"), user_package);
- apf_s = intern(lit("apf"), user_package);
- ipf_s = intern(lit("ipf"), user_package);
- ret_s = intern(lit("ret"), user_package);
- aret_s = intern(lit("aret"), user_package);
identity_s = intern(lit("identity"), user_package);
rest_s = intern(lit("rest"), user_package);
hash_lit_s = intern(lit("hash-lit"), system_package);
@@ -6212,12 +6178,6 @@ void eval_init(void)
}
reg_mac(sys_l1_val_s, func_n2(me_l1_val));
reg_mac(sys_l1_setq_s, func_n2(me_l1_setq));
- reg_mac(ap_s, func_n2(me_ap));
- reg_mac(intern(lit("ip"), user_package), func_n2(me_ip));
- reg_mac(intern(lit("ado"), user_package), func_n2(me_ado));
- reg_mac(intern(lit("ido"), user_package), func_n2(me_ido));
- reg_mac(ret_s, func_n2(me_ret_aret));
- reg_mac(aret_s, func_n2(me_ret_aret));
reg_mac(qquote_s, func_n2(me_qquote));
reg_mac(sys_qquote_s, func_n2(me_qquote));
reg_mac(intern(lit("equot"), user_package), func_n2(me_equot));
@@ -6538,8 +6498,8 @@ void eval_init(void)
reg_fun(intern(lit("or"), user_package), func_n0v(or_fun));
reg_fun(intern(lit("and"), user_package), func_n0v(and_fun));
reg_fun(intern(lit("retf"), user_package), func_n1(retf));
- reg_fun(apf_s, func_n1(apf));
- reg_fun(ipf_s, func_n1(ipf));
+ reg_fun(intern(lit("apf"), user_package), func_n1(apf));
+ reg_fun(intern(lit("ipf"), user_package), func_n1(ipf));
reg_fun(intern(lit("callf"), user_package), func_n1v(callf));
reg_fun(intern(lit("mapf"), user_package), func_n1v(mapf));
reg_fun(intern(lit("tf"), user_package), func_n0v(tf));
diff --git a/lisplib.c b/lisplib.c
index b168552c..0e1b72bf 100644
--- a/lisplib.c
+++ b/lisplib.c
@@ -718,7 +718,8 @@ static val compiler_set_entries(val dlt, val fun)
static val op_set_entries(val dlt, val fun)
{
val name[] = {
- lit("op"), lit("do"), lit("lop"),
+ lit("op"), lit("do"), lit("lop"), lit("ap"), lit("ip"),
+ lit("ado"), lit("ido"), lit("ret"), lit("aret"),
nil
};
set_dlt_entries(dlt, name, fun);
diff --git a/protsym.c b/protsym.c
index a7359c88..c9f60909 100644
--- a/protsym.c
+++ b/protsym.c
@@ -32,78 +32,77 @@
#include "lib.h"
extern val accept_s, addr_k, align_s, all_s, alloc_error_s;
-extern val and_s, ap_s, apf_s, append_each_s, append_each_star_s;
-extern val append_k, append_s, apply_s, aret_s, args_k;
-extern val array_s, assert_s, atime_k, atime_s, atom_s;
-extern val auto_k, bchar_s, be_double_s, be_float_s, be_int16_s;
-extern val be_int32_s, be_int64_s, be_uint16_s, be_uint32_s, be_uint64_s;
-extern val bignum_s, bind_s, bit_s, blksize_k, blksize_s;
-extern val block_s, block_star_s, blocks_k, blocks_s, bool_s;
-extern val bstr_d_s, bstr_s, buf_d_s, buf_s, byte_oriented_k;
-extern val call_s, car_s, carray_s, caseq_s, caseq_star_s;
-extern val caseql_s, caseql_star_s, casequal_s, casequal_star_s, cases_s;
-extern val cat_s, catch_s, cdigit_k, cdr_s, chain_s;
-extern val chand_s, char_s, chars_k, choose_s, chr_s;
-extern val chset_s, circref_s, clear_error_s, close_s, closure_s;
-extern val cobj_s, coll_s, collect_each_s, collect_each_star_s, collect_s;
-extern val colon_k, compl_s, compound_s, cond_s, cons_s;
-extern val continue_k, continue_s, counter_k, cptr_s, cset_s;
-extern val cspace_k, ctime_k, ctime_s, cword_char_k, data_s;
-extern val day_s, decline_k, defex_s, deffilter_s, define_s;
-extern val defmacro_s, defparm_s, defparml_s, defr_warning_s, defsymacro_s;
-extern val defun_s, defvar_s, defvarl_s, dev_k, dev_s;
-extern val digit_k, do_s, dohash_s, double_s, downcase_k;
-extern val dst_s, dvbind_s, dwim_s, each_op_s, each_s;
-extern val each_star_s, elif_s, else_s, empty_s, enum_s;
-extern val enumed_s, env_k, env_s, eof_s, eol_s;
-extern val eq_s, eql_based_k, eql_s, equal_based_k, equal_s;
-extern val error_s, eval_error_s, expr_s, fail_s, fbind_s;
-extern val fd_k, ffi_call_desc_s, ffi_closure_s, ffi_type_s, file_error_s;
-extern val fill_buf_s, filter_k, filter_s, filters_s, finally_s;
-extern val finish_k, first_s, fixnum_s, flatten_s, flet_s;
-extern val float_s, flush_s, for_op_s, for_s, for_star_s;
-extern val force_s, forget_s, form_k, format_s, freeform_s;
-extern val from_current_k, from_end_k, from_list_s, from_start_k, frombase64_k;
-extern val fromhtml_k, frompercent_k, fromurl_k, fun_k, fun_s;
-extern val fuzz_s, gap_k, gather_s, gen_s, generate_s;
-extern val gensym_counter_s, get_byte_s, get_char_s, get_error_s, get_error_str_s;
-extern val get_fd_s, get_line_s, get_prop_s, gid_k, gid_s;
-extern val gmtoff_s, greedy_k, gun_s, handler_bind_s, hash_construct_s;
-extern val hash_iter_s, hash_lit_s, hash_s, hash_seed_s, hextoint_k;
-extern val hour_s, iapply_s, identity_s, if_s, iflet_s;
-extern val in_package_s, inc_s, include_s, init_k, ino_k;
-extern val ino_s, int16_s, int32_s, int64_s, int8_s;
-extern val int_s, integer_s, internal_error_s, into_k, intr_s;
-extern val ipf_s, keyword_package_s, labels_s, lambda_s, lambda_set_s;
-extern val last_s, lbind_s, lcons_s, le_double_s, le_float_s;
-extern val le_int16_s, le_int32_s, le_int64_s, le_uint16_s, le_uint32_s;
-extern val le_uint64_s, length_s, let_s, let_star_s, lfilt_k;
-extern val line_s, lines_k, list_k, list_s, list_star_s;
-extern val listener_greedy_eval_s, listener_hist_len_s, listener_multi_line_p_s, listener_pprint_s, listener_sel_inclusive_p_s;
-extern val lists_k, lit_s, load_path_s, load_recursive_s, load_s;
-extern val load_time_lit_s, load_time_s, local_s, long_s, longest_k;
-extern val lstr_s, mac_param_bind_s, macro_s, macro_time_s, macrolet_s;
-extern val make_struct_lit_s, mandatory_k, maxgap_k, maxtimes_k, maybe_s;
-extern val mdo_s, memq_s, memql_s, memqual_s, merge_s;
-extern val meth_s, min_s, mingap_k, mintimes_k, mod_s;
-extern val mode_k, mode_s, modlast_s, month_s, mtime_k;
-extern val mtime_s, name_k, name_s, named_k, next_s;
-extern val next_spec_k, nlink_k, nlink_s, none_s, nongreedy_s;
-extern val not_s, nothrow_k, noval_s, null_s, nullify_s;
-extern val number_s, numeric_error_s, oand_s, oneplus_s, op_s;
-extern val opip_s, optional_s, or_s, output_s, package_alist_s;
-extern val package_s, panic_s, parser_s, path_s, pkg_s;
-extern val plus_s, postinit_k, pprint_flo_format_s, print_base_s, print_circle_s;
-extern val print_flo_digits_s, print_flo_format_s, print_flo_precision_s, print_s, process_error_s;
-extern val prof_s, prog1_s, progn_s, promise_forced_s, promise_inprogress_s;
-extern val promise_s, ptr_in_d_s, ptr_in_s, ptr_out_d_s, ptr_out_s;
-extern val ptr_out_s_s, ptr_s, put_buf_s, put_byte_s, put_char_s;
-extern val put_string_s, qquote_s, qref_s, quasi_s, quasilist_s;
-extern val query_error_s, quote_s, random_state_s, random_state_var_s, random_warmup_s;
-extern val range_error_s, range_s, rcons_s, rdev_k, rdev_s;
-extern val real_time_k, rebind_s, rec_source_loc_s, reflect_k, regex_s;
-extern val rep_s, repeat_s, repeat_spec_k, require_s, resolve_k;
-extern val rest_s, restart_s, ret_s, return_from_s, return_s;
+extern val and_s, append_each_s, append_each_star_s, append_k, append_s;
+extern val apply_s, args_k, array_s, assert_s, atime_k;
+extern val atime_s, atom_s, auto_k, bchar_s, be_double_s;
+extern val be_float_s, be_int16_s, be_int32_s, be_int64_s, be_uint16_s;
+extern val be_uint32_s, be_uint64_s, bignum_s, bind_s, bit_s;
+extern val blksize_k, blksize_s, block_s, block_star_s, blocks_k;
+extern val blocks_s, bool_s, bstr_d_s, bstr_s, buf_d_s;
+extern val buf_s, byte_oriented_k, call_s, car_s, carray_s;
+extern val caseq_s, caseq_star_s, caseql_s, caseql_star_s, casequal_s;
+extern val casequal_star_s, cases_s, cat_s, catch_s, cdigit_k;
+extern val cdr_s, chain_s, chand_s, char_s, chars_k;
+extern val choose_s, chr_s, chset_s, circref_s, clear_error_s;
+extern val close_s, closure_s, cobj_s, coll_s, collect_each_s;
+extern val collect_each_star_s, collect_s, colon_k, compl_s, compound_s;
+extern val cond_s, cons_s, continue_k, continue_s, counter_k;
+extern val cptr_s, cset_s, cspace_k, ctime_k, ctime_s;
+extern val cword_char_k, data_s, day_s, decline_k, defex_s;
+extern val deffilter_s, define_s, defmacro_s, defparm_s, defparml_s;
+extern val defr_warning_s, defsymacro_s, defun_s, defvar_s, defvarl_s;
+extern val dev_k, dev_s, digit_k, do_s, dohash_s;
+extern val double_s, downcase_k, dst_s, dvbind_s, dwim_s;
+extern val each_op_s, each_s, each_star_s, elif_s, else_s;
+extern val empty_s, enum_s, enumed_s, env_k, env_s;
+extern val eof_s, eol_s, eq_s, eql_based_k, eql_s;
+extern val equal_based_k, equal_s, error_s, eval_error_s, expr_s;
+extern val fail_s, fbind_s, fd_k, ffi_call_desc_s, ffi_closure_s;
+extern val ffi_type_s, file_error_s, fill_buf_s, filter_k, filter_s;
+extern val filters_s, finally_s, finish_k, first_s, fixnum_s;
+extern val flatten_s, flet_s, float_s, flush_s, for_op_s;
+extern val for_s, for_star_s, force_s, forget_s, form_k;
+extern val format_s, freeform_s, from_current_k, from_end_k, from_list_s;
+extern val from_start_k, frombase64_k, fromhtml_k, frompercent_k, fromurl_k;
+extern val fun_k, fun_s, fuzz_s, gap_k, gather_s;
+extern val gen_s, generate_s, gensym_counter_s, get_byte_s, get_char_s;
+extern val get_error_s, get_error_str_s, get_fd_s, get_line_s, get_prop_s;
+extern val gid_k, gid_s, gmtoff_s, greedy_k, gun_s;
+extern val handler_bind_s, hash_construct_s, hash_iter_s, hash_lit_s, hash_s;
+extern val hash_seed_s, hextoint_k, hour_s, iapply_s, identity_s;
+extern val if_s, iflet_s, in_package_s, inc_s, include_s;
+extern val init_k, ino_k, ino_s, int16_s, int32_s;
+extern val int64_s, int8_s, int_s, integer_s, internal_error_s;
+extern val into_k, intr_s, keyword_package_s, labels_s, lambda_s;
+extern val lambda_set_s, last_s, lbind_s, lcons_s, le_double_s;
+extern val le_float_s, le_int16_s, le_int32_s, le_int64_s, le_uint16_s;
+extern val le_uint32_s, le_uint64_s, length_s, let_s, let_star_s;
+extern val lfilt_k, line_s, lines_k, list_k, list_s;
+extern val list_star_s, listener_greedy_eval_s, listener_hist_len_s, listener_multi_line_p_s, listener_pprint_s;
+extern val listener_sel_inclusive_p_s, lists_k, lit_s, load_path_s, load_recursive_s;
+extern val load_s, load_time_lit_s, load_time_s, local_s, long_s;
+extern val longest_k, lstr_s, mac_param_bind_s, macro_s, macro_time_s;
+extern val macrolet_s, make_struct_lit_s, mandatory_k, maxgap_k, maxtimes_k;
+extern val maybe_s, mdo_s, memq_s, memql_s, memqual_s;
+extern val merge_s, meth_s, min_s, mingap_k, mintimes_k;
+extern val mod_s, mode_k, mode_s, modlast_s, month_s;
+extern val mtime_k, mtime_s, name_k, name_s, named_k;
+extern val next_s, next_spec_k, nlink_k, nlink_s, none_s;
+extern val nongreedy_s, not_s, nothrow_k, noval_s, null_s;
+extern val nullify_s, number_s, numeric_error_s, oand_s, oneplus_s;
+extern val op_s, opip_s, optional_s, or_s, output_s;
+extern val package_alist_s, package_s, panic_s, parser_s, path_s;
+extern val pkg_s, plus_s, postinit_k, pprint_flo_format_s, print_base_s;
+extern val print_circle_s, print_flo_digits_s, print_flo_format_s, print_flo_precision_s, print_s;
+extern val process_error_s, prof_s, prog1_s, progn_s, promise_forced_s;
+extern val promise_inprogress_s, promise_s, ptr_in_d_s, ptr_in_s, ptr_out_d_s;
+extern val ptr_out_s, ptr_out_s_s, ptr_s, put_buf_s, put_byte_s;
+extern val put_char_s, put_string_s, qquote_s, qref_s, quasi_s;
+extern val quasilist_s, query_error_s, quote_s, random_state_s, random_state_var_s;
+extern val random_warmup_s, range_error_s, range_s, rcons_s, rdev_k;
+extern val rdev_s, real_time_k, rebind_s, rec_source_loc_s, reflect_k;
+extern val regex_s, rep_s, repeat_s, repeat_spec_k, require_s;
+extern val resolve_k, rest_s, restart_s, return_from_s, return_s;
extern val rfilt_k, rplaca_s, rplacd_s, sbit_s, sec_s;
extern val seek_s, sequence_s, set_prop_s, set_s, setq_s;
extern val setqf_s, short_s, shortest_k, single_s, size_k;
@@ -163,78 +162,77 @@ extern val utsname_s, version_s;
val *protected_sym[] = {
&accept_s, &addr_k, &align_s, &all_s, &alloc_error_s,
- &and_s, &ap_s, &apf_s, &append_each_s, &append_each_star_s,
- &append_k, &append_s, &apply_s, &aret_s, &args_k,
- &array_s, &assert_s, &atime_k, &atime_s, &atom_s,
- &auto_k, &bchar_s, &be_double_s, &be_float_s, &be_int16_s,
- &be_int32_s, &be_int64_s, &be_uint16_s, &be_uint32_s, &be_uint64_s,
- &bignum_s, &bind_s, &bit_s, &blksize_k, &blksize_s,
- &block_s, &block_star_s, &blocks_k, &blocks_s, &bool_s,
- &bstr_d_s, &bstr_s, &buf_d_s, &buf_s, &byte_oriented_k,
- &call_s, &car_s, &carray_s, &caseq_s, &caseq_star_s,
- &caseql_s, &caseql_star_s, &casequal_s, &casequal_star_s, &cases_s,
- &cat_s, &catch_s, &cdigit_k, &cdr_s, &chain_s,
- &chand_s, &char_s, &chars_k, &choose_s, &chr_s,
- &chset_s, &circref_s, &clear_error_s, &close_s, &closure_s,
- &cobj_s, &coll_s, &collect_each_s, &collect_each_star_s, &collect_s,
- &colon_k, &compl_s, &compound_s, &cond_s, &cons_s,
- &continue_k, &continue_s, &counter_k, &cptr_s, &cset_s,
- &cspace_k, &ctime_k, &ctime_s, &cword_char_k, &data_s,
- &day_s, &decline_k, &defex_s, &deffilter_s, &define_s,
- &defmacro_s, &defparm_s, &defparml_s, &defr_warning_s, &defsymacro_s,
- &defun_s, &defvar_s, &defvarl_s, &dev_k, &dev_s,
- &digit_k, &do_s, &dohash_s, &double_s, &downcase_k,
- &dst_s, &dvbind_s, &dwim_s, &each_op_s, &each_s,
- &each_star_s, &elif_s, &else_s, &empty_s, &enum_s,
- &enumed_s, &env_k, &env_s, &eof_s, &eol_s,
- &eq_s, &eql_based_k, &eql_s, &equal_based_k, &equal_s,
- &error_s, &eval_error_s, &expr_s, &fail_s, &fbind_s,
- &fd_k, &ffi_call_desc_s, &ffi_closure_s, &ffi_type_s, &file_error_s,
- &fill_buf_s, &filter_k, &filter_s, &filters_s, &finally_s,
- &finish_k, &first_s, &fixnum_s, &flatten_s, &flet_s,
- &float_s, &flush_s, &for_op_s, &for_s, &for_star_s,
- &force_s, &forget_s, &form_k, &format_s, &freeform_s,
- &from_current_k, &from_end_k, &from_list_s, &from_start_k, &frombase64_k,
- &fromhtml_k, &frompercent_k, &fromurl_k, &fun_k, &fun_s,
- &fuzz_s, &gap_k, &gather_s, &gen_s, &generate_s,
- &gensym_counter_s, &get_byte_s, &get_char_s, &get_error_s, &get_error_str_s,
- &get_fd_s, &get_line_s, &get_prop_s, &gid_k, &gid_s,
- &gmtoff_s, &greedy_k, &gun_s, &handler_bind_s, &hash_construct_s,
- &hash_iter_s, &hash_lit_s, &hash_s, &hash_seed_s, &hextoint_k,
- &hour_s, &iapply_s, &identity_s, &if_s, &iflet_s,
- &in_package_s, &inc_s, &include_s, &init_k, &ino_k,
- &ino_s, &int16_s, &int32_s, &int64_s, &int8_s,
- &int_s, &integer_s, &internal_error_s, &into_k, &intr_s,
- &ipf_s, &keyword_package_s, &labels_s, &lambda_s, &lambda_set_s,
- &last_s, &lbind_s, &lcons_s, &le_double_s, &le_float_s,
- &le_int16_s, &le_int32_s, &le_int64_s, &le_uint16_s, &le_uint32_s,
- &le_uint64_s, &length_s, &let_s, &let_star_s, &lfilt_k,
- &line_s, &lines_k, &list_k, &list_s, &list_star_s,
- &listener_greedy_eval_s, &listener_hist_len_s, &listener_multi_line_p_s, &listener_pprint_s, &listener_sel_inclusive_p_s,
- &lists_k, &lit_s, &load_path_s, &load_recursive_s, &load_s,
- &load_time_lit_s, &load_time_s, &local_s, &long_s, &longest_k,
- &lstr_s, &mac_param_bind_s, &macro_s, &macro_time_s, &macrolet_s,
- &make_struct_lit_s, &mandatory_k, &maxgap_k, &maxtimes_k, &maybe_s,
- &mdo_s, &memq_s, &memql_s, &memqual_s, &merge_s,
- &meth_s, &min_s, &mingap_k, &mintimes_k, &mod_s,
- &mode_k, &mode_s, &modlast_s, &month_s, &mtime_k,
- &mtime_s, &name_k, &name_s, &named_k, &next_s,
- &next_spec_k, &nlink_k, &nlink_s, &none_s, &nongreedy_s,
- &not_s, &nothrow_k, &noval_s, &null_s, &nullify_s,
- &number_s, &numeric_error_s, &oand_s, &oneplus_s, &op_s,
- &opip_s, &optional_s, &or_s, &output_s, &package_alist_s,
- &package_s, &panic_s, &parser_s, &path_s, &pkg_s,
- &plus_s, &postinit_k, &pprint_flo_format_s, &print_base_s, &print_circle_s,
- &print_flo_digits_s, &print_flo_format_s, &print_flo_precision_s, &print_s, &process_error_s,
- &prof_s, &prog1_s, &progn_s, &promise_forced_s, &promise_inprogress_s,
- &promise_s, &ptr_in_d_s, &ptr_in_s, &ptr_out_d_s, &ptr_out_s,
- &ptr_out_s_s, &ptr_s, &put_buf_s, &put_byte_s, &put_char_s,
- &put_string_s, &qquote_s, &qref_s, &quasi_s, &quasilist_s,
- &query_error_s, &quote_s, &random_state_s, &random_state_var_s, &random_warmup_s,
- &range_error_s, &range_s, &rcons_s, &rdev_k, &rdev_s,
- &real_time_k, &rebind_s, &rec_source_loc_s, &reflect_k, &regex_s,
- &rep_s, &repeat_s, &repeat_spec_k, &require_s, &resolve_k,
- &rest_s, &restart_s, &ret_s, &return_from_s, &return_s,
+ &and_s, &append_each_s, &append_each_star_s, &append_k, &append_s,
+ &apply_s, &args_k, &array_s, &assert_s, &atime_k,
+ &atime_s, &atom_s, &auto_k, &bchar_s, &be_double_s,
+ &be_float_s, &be_int16_s, &be_int32_s, &be_int64_s, &be_uint16_s,
+ &be_uint32_s, &be_uint64_s, &bignum_s, &bind_s, &bit_s,
+ &blksize_k, &blksize_s, &block_s, &block_star_s, &blocks_k,
+ &blocks_s, &bool_s, &bstr_d_s, &bstr_s, &buf_d_s,
+ &buf_s, &byte_oriented_k, &call_s, &car_s, &carray_s,
+ &caseq_s, &caseq_star_s, &caseql_s, &caseql_star_s, &casequal_s,
+ &casequal_star_s, &cases_s, &cat_s, &catch_s, &cdigit_k,
+ &cdr_s, &chain_s, &chand_s, &char_s, &chars_k,
+ &choose_s, &chr_s, &chset_s, &circref_s, &clear_error_s,
+ &close_s, &closure_s, &cobj_s, &coll_s, &collect_each_s,
+ &collect_each_star_s, &collect_s, &colon_k, &compl_s, &compound_s,
+ &cond_s, &cons_s, &continue_k, &continue_s, &counter_k,
+ &cptr_s, &cset_s, &cspace_k, &ctime_k, &ctime_s,
+ &cword_char_k, &data_s, &day_s, &decline_k, &defex_s,
+ &deffilter_s, &define_s, &defmacro_s, &defparm_s, &defparml_s,
+ &defr_warning_s, &defsymacro_s, &defun_s, &defvar_s, &defvarl_s,
+ &dev_k, &dev_s, &digit_k, &do_s, &dohash_s,
+ &double_s, &downcase_k, &dst_s, &dvbind_s, &dwim_s,
+ &each_op_s, &each_s, &each_star_s, &elif_s, &else_s,
+ &empty_s, &enum_s, &enumed_s, &env_k, &env_s,
+ &eof_s, &eol_s, &eq_s, &eql_based_k, &eql_s,
+ &equal_based_k, &equal_s, &error_s, &eval_error_s, &expr_s,
+ &fail_s, &fbind_s, &fd_k, &ffi_call_desc_s, &ffi_closure_s,
+ &ffi_type_s, &file_error_s, &fill_buf_s, &filter_k, &filter_s,
+ &filters_s, &finally_s, &finish_k, &first_s, &fixnum_s,
+ &flatten_s, &flet_s, &float_s, &flush_s, &for_op_s,
+ &for_s, &for_star_s, &force_s, &forget_s, &form_k,
+ &format_s, &freeform_s, &from_current_k, &from_end_k, &from_list_s,
+ &from_start_k, &frombase64_k, &fromhtml_k, &frompercent_k, &fromurl_k,
+ &fun_k, &fun_s, &fuzz_s, &gap_k, &gather_s,
+ &gen_s, &generate_s, &gensym_counter_s, &get_byte_s, &get_char_s,
+ &get_error_s, &get_error_str_s, &get_fd_s, &get_line_s, &get_prop_s,
+ &gid_k, &gid_s, &gmtoff_s, &greedy_k, &gun_s,
+ &handler_bind_s, &hash_construct_s, &hash_iter_s, &hash_lit_s, &hash_s,
+ &hash_seed_s, &hextoint_k, &hour_s, &iapply_s, &identity_s,
+ &if_s, &iflet_s, &in_package_s, &inc_s, &include_s,
+ &init_k, &ino_k, &ino_s, &int16_s, &int32_s,
+ &int64_s, &int8_s, &int_s, &integer_s, &internal_error_s,
+ &into_k, &intr_s, &keyword_package_s, &labels_s, &lambda_s,
+ &lambda_set_s, &last_s, &lbind_s, &lcons_s, &le_double_s,
+ &le_float_s, &le_int16_s, &le_int32_s, &le_int64_s, &le_uint16_s,
+ &le_uint32_s, &le_uint64_s, &length_s, &let_s, &let_star_s,
+ &lfilt_k, &line_s, &lines_k, &list_k, &list_s,
+ &list_star_s, &listener_greedy_eval_s, &listener_hist_len_s, &listener_multi_line_p_s, &listener_pprint_s,
+ &listener_sel_inclusive_p_s, &lists_k, &lit_s, &load_path_s, &load_recursive_s,
+ &load_s, &load_time_lit_s, &load_time_s, &local_s, &long_s,
+ &longest_k, &lstr_s, &mac_param_bind_s, &macro_s, &macro_time_s,
+ &macrolet_s, &make_struct_lit_s, &mandatory_k, &maxgap_k, &maxtimes_k,
+ &maybe_s, &mdo_s, &memq_s, &memql_s, &memqual_s,
+ &merge_s, &meth_s, &min_s, &mingap_k, &mintimes_k,
+ &mod_s, &mode_k, &mode_s, &modlast_s, &month_s,
+ &mtime_k, &mtime_s, &name_k, &name_s, &named_k,
+ &next_s, &next_spec_k, &nlink_k, &nlink_s, &none_s,
+ &nongreedy_s, &not_s, &nothrow_k, &noval_s, &null_s,
+ &nullify_s, &number_s, &numeric_error_s, &oand_s, &oneplus_s,
+ &op_s, &opip_s, &optional_s, &or_s, &output_s,
+ &package_alist_s, &package_s, &panic_s, &parser_s, &path_s,
+ &pkg_s, &plus_s, &postinit_k, &pprint_flo_format_s, &print_base_s,
+ &print_circle_s, &print_flo_digits_s, &print_flo_format_s, &print_flo_precision_s, &print_s,
+ &process_error_s, &prof_s, &prog1_s, &progn_s, &promise_forced_s,
+ &promise_inprogress_s, &promise_s, &ptr_in_d_s, &ptr_in_s, &ptr_out_d_s,
+ &ptr_out_s, &ptr_out_s_s, &ptr_s, &put_buf_s, &put_byte_s,
+ &put_char_s, &put_string_s, &qquote_s, &qref_s, &quasi_s,
+ &quasilist_s, &query_error_s, &quote_s, &random_state_s, &random_state_var_s,
+ &random_warmup_s, &range_error_s, &range_s, &rcons_s, &rdev_k,
+ &rdev_s, &real_time_k, &rebind_s, &rec_source_loc_s, &reflect_k,
+ &regex_s, &rep_s, &repeat_s, &repeat_spec_k, &require_s,
+ &resolve_k, &rest_s, &restart_s, &return_from_s, &return_s,
&rfilt_k, &rplaca_s, &rplacd_s, &sbit_s, &sec_s,
&seek_s, &sequence_s, &set_prop_s, &set_s, &setq_s,
&setqf_s, &short_s, &shortest_k, &single_s, &size_k,
diff --git a/share/txr/stdlib/op.tl b/share/txr/stdlib/op.tl
index b93b4e17..2457a096 100644
--- a/share/txr/stdlib/op.tl
+++ b/share/txr/stdlib/op.tl
@@ -105,3 +105,21 @@
(defmacro lop (:form f :env e . args)
(sys:op-expand f e args))
+
+(defmacro ap (. args)
+ ^(apf (op ,*args)))
+
+(defmacro ip (. args)
+ ^(ipf (op ,*args)))
+
+(defmacro ado (. args)
+ ^(apf (do ,*args)))
+
+(defmacro ido (. args)
+ ^(ipf (do ,*args)))
+
+(defmacro ret (. args)
+ ^(op identity (progn @rest ,*args)))
+
+(defmacro aret (. args)
+ ^(ap identity (progn @rest ,*args)))