diff --git a/implementations/C/KEYWORDS.txt b/implementations/C/KEYWORDS.txt index 19d3f79..9617ba7 100644 --- a/implementations/C/KEYWORDS.txt +++ b/implementations/C/KEYWORDS.txt @@ -74,6 +74,7 @@ b, def_b binary, def_binary ccccons, def_ccccons ccons, def_ccons +choice, def_choice cleave, def_cleave clop, def_clop codi, def_codi @@ -97,6 +98,7 @@ fork, def_fork fourth, def_fourth gcd, def_gcd genrec, def_genrec +getitem, def_getitem grabN, def_grabN grba, def_grba ifte, def_ifte @@ -105,6 +107,7 @@ infra, def_infra infrst, def_infrst <<, def_LESS_THAN_SIGN_LESS_THAN_SIGN make_generator, def_make_generator +modulus, def_modulus neg, def_neg not, def_not nulco, def_nulco @@ -114,6 +117,7 @@ of, def_of or, def_or over, def_over pam, def_pam +pick, def_pick pm, def_pm popdd, def_popdd popd, def_popd @@ -122,6 +126,7 @@ popopd, def_popopd popopop, def_popopop popop, def_popop pow, def_pow +pred, def_pred product, def_product quoted, def_quoted range, def_range @@ -147,6 +152,7 @@ sqr, def_sqr stackd, def_stackd step_zero, def_step_zero stuncons, def_stuncons +succ, def_succ sum, def_sum swapd, def_swapd swoncat, def_swoncat @@ -185,6 +191,12 @@ _\/_, def___REVERSE_SOLIDUS_SOLIDUS__ \/, def_REVERSE_SOLIDUS_SOLIDUS _isnt_list, def__isnt_list zip, def_zip -shift-pair, def_shift_HYPHEN_MINUS_pair +uncons-pair, def_uncons_HYPHEN_MINUS_pair uncons-two, def_uncons_HYPHEN_MINUS_two quote-two, def_quote_HYPHEN_MINUS_two +empty?, def_empty_QUESTION_MARK +max-of-two, def_max_HYPHEN_MINUS_of_HYPHEN_MINUS_two +max, def_max +min-of-two, def_min_HYPHEN_MINUS_of_HYPHEN_MINUS_two +min, def_min +on-non-empty-list, def_on_HYPHEN_MINUS_non_HYPHEN_MINUS_empty_HYPHEN_MINUS_list diff --git a/implementations/C/definitions.c b/implementations/C/definitions.c index bfd0a20..01739aa 100644 --- a/implementations/C/definitions.c +++ b/implementations/C/definitions.c @@ -37,6 +37,7 @@ JoyList def_b_body; JoyList def_binary_body; JoyList def_ccccons_body; JoyList def_ccons_body; +JoyList def_choice_body; JoyList def_cleave_body; JoyList def_clop_body; JoyList def_codi_body; @@ -60,6 +61,7 @@ JoyList def_fork_body; JoyList def_fourth_body; JoyList def_gcd_body; JoyList def_genrec_body; +JoyList def_getitem_body; JoyList def_grabN_body; JoyList def_grba_body; JoyList def_ifte_body; @@ -68,6 +70,7 @@ JoyList def_infra_body; JoyList def_infrst_body; JoyList def_LESS_THAN_SIGN_LESS_THAN_SIGN_body; JoyList def_make_generator_body; +JoyList def_modulus_body; JoyList def_neg_body; JoyList def_not_body; JoyList def_nulco_body; @@ -77,6 +80,7 @@ JoyList def_of_body; JoyList def_or_body; JoyList def_over_body; JoyList def_pam_body; +JoyList def_pick_body; JoyList def_pm_body; JoyList def_popdd_body; JoyList def_popd_body; @@ -85,6 +89,7 @@ JoyList def_popopd_body; JoyList def_popopop_body; JoyList def_popop_body; JoyList def_pow_body; +JoyList def_pred_body; JoyList def_product_body; JoyList def_quoted_body; JoyList def_range_body; @@ -110,6 +115,7 @@ JoyList def_sqr_body; JoyList def_stackd_body; JoyList def_step_zero_body; JoyList def_stuncons_body; +JoyList def_succ_body; JoyList def_sum_body; JoyList def_swapd_body; JoyList def_swoncat_body; @@ -148,9 +154,15 @@ JoyList def_SOLIDUS_REVERSE_SOLIDUS_body; JoyList def_REVERSE_SOLIDUS_SOLIDUS_body; JoyList def__isnt_list_body; JoyList def_zip_body; -JoyList def_shift_HYPHEN_MINUS_pair_body; +JoyList def_uncons_HYPHEN_MINUS_pair_body; JoyList def_uncons_HYPHEN_MINUS_two_body; JoyList def_quote_HYPHEN_MINUS_two_body; +JoyList def_empty_QUESTION_MARK_body; +JoyList def_max_HYPHEN_MINUS_of_HYPHEN_MINUS_two_body; +JoyList def_max_body; +JoyList def_min_HYPHEN_MINUS_of_HYPHEN_MINUS_two_body; +JoyList def_min_body; +JoyList def_on_HYPHEN_MINUS_non_HYPHEN_MINUS_empty_HYPHEN_MINUS_list_body; /* @@ -186,6 +198,7 @@ init_defs(void) def_binary_body = text_to_expression("unary popd"); def_ccccons_body = text_to_expression("ccons ccons"); def_ccons_body = text_to_expression("cons cons"); + def_choice_body = text_to_expression("[pop] [popd] branch"); def_cleave_body = text_to_expression("fork popdd"); def_clop_body = text_to_expression("cleave popdd"); def_codi_body = text_to_expression("cons dip"); @@ -209,6 +222,7 @@ init_defs(void) def_fourth_body = text_to_expression("rest third"); def_gcd_body = text_to_expression("true [tuck mod dup 0 >] loop pop"); def_genrec_body = text_to_expression("[[genrec] ccccons] nullary swons concat ifte"); + def_getitem_body = text_to_expression("[rest] times first"); def_grabN_body = text_to_expression("<{} [cons] times"); def_grba_body = text_to_expression("[stack popd] dip"); def_ifte_body = text_to_expression("[nullary] dipd swap branch"); @@ -217,6 +231,7 @@ init_defs(void) def_infrst_body = text_to_expression("infra first"); def_LESS_THAN_SIGN_LESS_THAN_SIGN_body = text_to_expression("lshift"); def_make_generator_body = text_to_expression("[codireco] ccons"); + def_modulus_body = text_to_expression("%"); def_neg_body = text_to_expression("0 swap -"); def_not_body = text_to_expression("[true] [false] branch"); def_nulco_body = text_to_expression("[nullary] cons"); @@ -226,6 +241,7 @@ init_defs(void) def_or_body = text_to_expression("nulco [nullary] dip [true] branch"); def_over_body = text_to_expression("[dup] dip swap"); def_pam_body = text_to_expression("[i] map"); + def_pick_body = text_to_expression("getitem"); def_pm_body = text_to_expression("[+] [-] clop"); def_popdd_body = text_to_expression("[pop] dipd"); def_popd_body = text_to_expression("[pop] dip"); @@ -234,6 +250,7 @@ init_defs(void) def_popopop_body = text_to_expression("pop popop"); def_popop_body = text_to_expression("pop pop"); def_pow_body = text_to_expression("1 roll> swap [*] cons times"); + def_pred_body = text_to_expression("--"); def_product_body = text_to_expression("1 swap [*] step"); def_quoted_body = text_to_expression("[unit] dip"); def_range_body = text_to_expression("[0 <=] [-- dup] anamorphism"); @@ -259,6 +276,7 @@ init_defs(void) def_stackd_body = text_to_expression("[stack] dip"); def_step_zero_body = text_to_expression("0 roll> step"); def_stuncons_body = text_to_expression("stack uncons"); + def_succ_body = text_to_expression("--"); def_sum_body = text_to_expression("[+] step_zero"); def_swapd_body = text_to_expression("[swap] dip"); def_swoncat_body = text_to_expression("swap concat"); @@ -296,10 +314,16 @@ init_defs(void) def_SOLIDUS_REVERSE_SOLIDUS_body = text_to_expression("_isnt_two_bools [pop false] [] branch"); def_REVERSE_SOLIDUS_SOLIDUS_body = text_to_expression("_isnt_two_bools [] [pop true] branch"); def__isnt_list_body = text_to_expression("[] swoncat"); - def_zip_body = text_to_expression("[null] [pop] [shift-pair] [i cons] genrec"); - def_shift_HYPHEN_MINUS_pair_body = text_to_expression("uncons-two [quote-two] dipd"); + def_zip_body = text_to_expression("[null] [pop] [uncons-pair] [i cons] genrec"); + def_uncons_HYPHEN_MINUS_pair_body = text_to_expression("uncons-two [quote-two] dipd"); def_uncons_HYPHEN_MINUS_two_body = text_to_expression("[uncons] ii swapd"); def_quote_HYPHEN_MINUS_two_body = text_to_expression("unit cons"); + def_empty_QUESTION_MARK_body = text_to_expression("dup null"); + def_max_HYPHEN_MINUS_of_HYPHEN_MINUS_two_body = text_to_expression("[>] [pop] [popd] ifte"); + def_max_body = text_to_expression("[uncons [max-of-two] step] on-non-empty-list"); + def_min_HYPHEN_MINUS_of_HYPHEN_MINUS_two_body = text_to_expression("[<] [pop] [popd] ifte"); + def_min_body = text_to_expression("[uncons [min-of-two] step] on-non-empty-list"); + def_on_HYPHEN_MINUS_non_HYPHEN_MINUS_empty_HYPHEN_MINUS_list_body = text_to_expression("[empty?] dip [first] branch"); } @@ -332,6 +356,7 @@ void def_b(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { pu void def_binary(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_binary_body, expression); } void def_ccccons(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_ccccons_body, expression); } void def_ccons(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_ccons_body, expression); } +void def_choice(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_choice_body, expression); } void def_cleave(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_cleave_body, expression); } void def_clop(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_clop_body, expression); } void def_codi(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_codi_body, expression); } @@ -355,6 +380,7 @@ void def_fork(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { void def_fourth(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_fourth_body, expression); } void def_gcd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_gcd_body, expression); } void def_genrec(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_genrec_body, expression); } +void def_getitem(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_getitem_body, expression); } void def_grabN(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_grabN_body, expression); } void def_grba(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_grba_body, expression); } void def_ifte(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_ifte_body, expression); } @@ -363,6 +389,7 @@ void def_infra(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) void def_infrst(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_infrst_body, expression); } void def_LESS_THAN_SIGN_LESS_THAN_SIGN(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_LESS_THAN_SIGN_LESS_THAN_SIGN_body, expression); } void def_make_generator(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_make_generator_body, expression); } +void def_modulus(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_modulus_body, expression); } void def_neg(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_neg_body, expression); } void def_not(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_not_body, expression); } void def_nulco(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_nulco_body, expression); } @@ -372,6 +399,7 @@ void def_of(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { p void def_or(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_or_body, expression); } void def_over(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_over_body, expression); } void def_pam(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_pam_body, expression); } +void def_pick(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_pick_body, expression); } void def_pm(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_pm_body, expression); } void def_popdd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_popdd_body, expression); } void def_popd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_popd_body, expression); } @@ -380,6 +408,7 @@ void def_popopd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) void def_popopop(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_popopop_body, expression); } void def_popop(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_popop_body, expression); } void def_pow(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_pow_body, expression); } +void def_pred(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_pred_body, expression); } void def_product(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_product_body, expression); } void def_quoted(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_quoted_body, expression); } void def_range(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_range_body, expression); } @@ -405,6 +434,7 @@ void def_sqr(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { void def_stackd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_stackd_body, expression); } void def_step_zero(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_step_zero_body, expression); } void def_stuncons(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_stuncons_body, expression); } +void def_succ(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_succ_body, expression); } void def_sum(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_sum_body, expression); } void def_swapd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_swapd_body, expression); } void def_swoncat(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_swoncat_body, expression); } @@ -443,6 +473,12 @@ void def_SOLIDUS_REVERSE_SOLIDUS(__attribute__((unused)) JoyListPtr stack, JoyLi void def_REVERSE_SOLIDUS_SOLIDUS(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_REVERSE_SOLIDUS_SOLIDUS_body, expression); } void def__isnt_list(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def__isnt_list_body, expression); } void def_zip(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_zip_body, expression); } -void def_shift_HYPHEN_MINUS_pair(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_shift_HYPHEN_MINUS_pair_body, expression); } +void def_uncons_HYPHEN_MINUS_pair(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_uncons_HYPHEN_MINUS_pair_body, expression); } void def_uncons_HYPHEN_MINUS_two(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_uncons_HYPHEN_MINUS_two_body, expression); } void def_quote_HYPHEN_MINUS_two(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_quote_HYPHEN_MINUS_two_body, expression); } +void def_empty_QUESTION_MARK(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_empty_QUESTION_MARK_body, expression); } +void def_max_HYPHEN_MINUS_of_HYPHEN_MINUS_two(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_max_HYPHEN_MINUS_of_HYPHEN_MINUS_two_body, expression); } +void def_max(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_max_body, expression); } +void def_min_HYPHEN_MINUS_of_HYPHEN_MINUS_two(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_min_HYPHEN_MINUS_of_HYPHEN_MINUS_two_body, expression); } +void def_min(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_min_body, expression); } +void def_on_HYPHEN_MINUS_non_HYPHEN_MINUS_empty_HYPHEN_MINUS_list(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_on_HYPHEN_MINUS_non_HYPHEN_MINUS_empty_HYPHEN_MINUS_list_body, expression); } diff --git a/implementations/C/definitions.h b/implementations/C/definitions.h index a0895b3..cbe972f 100644 --- a/implementations/C/definitions.h +++ b/implementations/C/definitions.h @@ -28,6 +28,7 @@ void def_b(JoyListPtr stack, JoyListPtr expression); void def_binary(JoyListPtr stack, JoyListPtr expression); void def_ccccons(JoyListPtr stack, JoyListPtr expression); void def_ccons(JoyListPtr stack, JoyListPtr expression); +void def_choice(JoyListPtr stack, JoyListPtr expression); void def_cleave(JoyListPtr stack, JoyListPtr expression); void def_clop(JoyListPtr stack, JoyListPtr expression); void def_codi(JoyListPtr stack, JoyListPtr expression); @@ -51,6 +52,7 @@ void def_fork(JoyListPtr stack, JoyListPtr expression); void def_fourth(JoyListPtr stack, JoyListPtr expression); void def_gcd(JoyListPtr stack, JoyListPtr expression); void def_genrec(JoyListPtr stack, JoyListPtr expression); +void def_getitem(JoyListPtr stack, JoyListPtr expression); void def_grabN(JoyListPtr stack, JoyListPtr expression); void def_grba(JoyListPtr stack, JoyListPtr expression); void def_ifte(JoyListPtr stack, JoyListPtr expression); @@ -59,6 +61,7 @@ void def_infra(JoyListPtr stack, JoyListPtr expression); void def_infrst(JoyListPtr stack, JoyListPtr expression); void def_LESS_THAN_SIGN_LESS_THAN_SIGN(JoyListPtr stack, JoyListPtr expression); void def_make_generator(JoyListPtr stack, JoyListPtr expression); +void def_modulus(JoyListPtr stack, JoyListPtr expression); void def_neg(JoyListPtr stack, JoyListPtr expression); void def_not(JoyListPtr stack, JoyListPtr expression); void def_nulco(JoyListPtr stack, JoyListPtr expression); @@ -68,6 +71,7 @@ void def_of(JoyListPtr stack, JoyListPtr expression); void def_or(JoyListPtr stack, JoyListPtr expression); void def_over(JoyListPtr stack, JoyListPtr expression); void def_pam(JoyListPtr stack, JoyListPtr expression); +void def_pick(JoyListPtr stack, JoyListPtr expression); void def_pm(JoyListPtr stack, JoyListPtr expression); void def_popdd(JoyListPtr stack, JoyListPtr expression); void def_popd(JoyListPtr stack, JoyListPtr expression); @@ -76,6 +80,7 @@ void def_popopd(JoyListPtr stack, JoyListPtr expression); void def_popopop(JoyListPtr stack, JoyListPtr expression); void def_popop(JoyListPtr stack, JoyListPtr expression); void def_pow(JoyListPtr stack, JoyListPtr expression); +void def_pred(JoyListPtr stack, JoyListPtr expression); void def_product(JoyListPtr stack, JoyListPtr expression); void def_quoted(JoyListPtr stack, JoyListPtr expression); void def_range(JoyListPtr stack, JoyListPtr expression); @@ -101,6 +106,7 @@ void def_sqr(JoyListPtr stack, JoyListPtr expression); void def_stackd(JoyListPtr stack, JoyListPtr expression); void def_step_zero(JoyListPtr stack, JoyListPtr expression); void def_stuncons(JoyListPtr stack, JoyListPtr expression); +void def_succ(JoyListPtr stack, JoyListPtr expression); void def_sum(JoyListPtr stack, JoyListPtr expression); void def_swapd(JoyListPtr stack, JoyListPtr expression); void def_swoncat(JoyListPtr stack, JoyListPtr expression); @@ -139,6 +145,12 @@ void def_SOLIDUS_REVERSE_SOLIDUS(JoyListPtr stack, JoyListPtr expression); void def_REVERSE_SOLIDUS_SOLIDUS(JoyListPtr stack, JoyListPtr expression); void def__isnt_list(JoyListPtr stack, JoyListPtr expression); void def_zip(JoyListPtr stack, JoyListPtr expression); -void def_shift_HYPHEN_MINUS_pair(JoyListPtr stack, JoyListPtr expression); +void def_uncons_HYPHEN_MINUS_pair(JoyListPtr stack, JoyListPtr expression); void def_uncons_HYPHEN_MINUS_two(JoyListPtr stack, JoyListPtr expression); void def_quote_HYPHEN_MINUS_two(JoyListPtr stack, JoyListPtr expression); +void def_empty_QUESTION_MARK(JoyListPtr stack, JoyListPtr expression); +void def_max_HYPHEN_MINUS_of_HYPHEN_MINUS_two(JoyListPtr stack, JoyListPtr expression); +void def_max(JoyListPtr stack, JoyListPtr expression); +void def_min_HYPHEN_MINUS_of_HYPHEN_MINUS_two(JoyListPtr stack, JoyListPtr expression); +void def_min(JoyListPtr stack, JoyListPtr expression); +void def_on_HYPHEN_MINUS_non_HYPHEN_MINUS_empty_HYPHEN_MINUS_list(JoyListPtr stack, JoyListPtr expression); diff --git a/implementations/C/defs.txt b/implementations/C/defs.txt index f6671fc..a2ada1e 100644 --- a/implementations/C/defs.txt +++ b/implementations/C/defs.txt @@ -23,6 +23,7 @@ b [i] dip i binary unary popd ccccons ccons ccons ccons cons cons +choice [pop] [popd] branch clear [] swaack pop cleave fork popdd clop cleave popdd @@ -49,6 +50,7 @@ fork [i] app2 fourth rest third gcd true [tuck mod dup 0 >] loop pop genrec [[genrec] ccccons] nullary swons concat ifte +getitem [rest] times first grabN <{} [cons] times grba [stack popd] dip ifte [nullary] dipd swap branch @@ -59,6 +61,7 @@ infrst infra first lshift [2 *] times make_generator [codireco] ccons mod % +modulus % neg 0 swap - not [true] [false] branch nulco [nullary] cons @@ -68,6 +71,7 @@ of swap at or nulco [nullary] dip [true] branch over [dup] dip swap pam [i] map +pick getitem pm [+] [-] clop popdd [pop] dipd popd [pop] dip @@ -76,6 +80,7 @@ popopd [popop] dip popopop pop popop popop pop pop pow 1 roll> swap [*] cons times +pred -- product 1 swap [*] step quoted [unit] dip range [0 <=] [-- dup] anamorphism @@ -103,6 +108,7 @@ sqr dup mul stackd [stack] dip step_zero 0 roll> step stuncons stack uncons +succ -- sum [+] step_zero swapd [swap] dip swoncat swap concat @@ -140,7 +146,13 @@ _\/_ [_isnt_bool] [not] branch /\ _isnt_two_bools [pop false] [] branch \/ _isnt_two_bools [] [pop true] branch _isnt_list [] swoncat -zip [null] [pop] [shift-pair] [i cons] genrec -shift-pair uncons-two [quote-two] dipd +zip [null] [pop] [uncons-pair] [i cons] genrec +uncons-pair uncons-two [quote-two] dipd uncons-two [uncons] ii swapd quote-two unit cons +empty? dup null +max-of-two [>] [pop] [popd] ifte +max [uncons [max-of-two] step] on-non-empty-list +min-of-two [<] [pop] [popd] ifte +min [uncons [min-of-two] step] on-non-empty-list +on-non-empty-list [empty?] dip [first] branch diff --git a/implementations/C/keywords.c b/implementations/C/keywords.c index 5cf973e..bf2c7e4 100644 --- a/implementations/C/keywords.c +++ b/implementations/C/keywords.c @@ -36,7 +36,7 @@ #line 13 "KEYWORDS.txt" struct dict_entry; #include -/* maximum key range = 323, duplicates = 0 */ +/* maximum key range = 365, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -50,32 +50,32 @@ keyword_hash (register const char *str, register size_t len) { static const unsigned short asso_values[] = { - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 110, 324, 324, 324, 105, 324, 324, - 324, 324, 100, 50, 324, 35, 324, 10, 35, 10, - 80, 35, 324, 324, 324, 324, 324, 324, 324, 324, - 95, 60, 15, 40, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 40, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 15, 324, 324, 100, 324, 20, 70, 15, - 5, 60, 55, 100, 55, 0, 324, 55, 35, 100, - 0, 0, 0, 110, 65, 0, 30, 15, 80, 160, - 55, 85, 15, 5, 324, 0, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324 + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 50, 366, 366, 366, 95, 366, 366, + 366, 366, 50, 45, 366, 85, 366, 20, 95, 85, + 35, 50, 366, 366, 366, 366, 366, 366, 366, 366, + 75, 115, 15, 55, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 15, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 80, 366, 366, 75, 366, 105, 70, 15, + 5, 30, 35, 115, 20, 0, 366, 95, 65, 85, + 0, 0, 0, 110, 55, 0, 40, 15, 30, 45, + 10, 105, 10, 30, 366, 0, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366 }; register unsigned int hval = len; @@ -99,11 +99,11 @@ in_word_set (register const char *str, register size_t len) { enum { - TOTAL_KEYWORDS = 176, + TOTAL_KEYWORDS = 188, MIN_WORD_LENGTH = 1, - MAX_WORD_LENGTH = 15, + MAX_WORD_LENGTH = 17, MIN_HASH_VALUE = 1, - MAX_HASH_VALUE = 323 + MAX_HASH_VALUE = 365 }; static const struct dict_entry wordlist[] = @@ -111,421 +111,449 @@ in_word_set (register const char *str, register size_t len) {""}, #line 43 "KEYWORDS.txt" {"i", i_joyfunc}, -#line 103 "KEYWORDS.txt" +#line 105 "KEYWORDS.txt" {"ii", def_ii}, #line 46 "KEYWORDS.txt" {"pop", pop}, {""}, -#line 123 "KEYWORDS.txt" +#line 127 "KEYWORDS.txt" {"popop", def_popop}, {""}, -#line 122 "KEYWORDS.txt" +#line 126 "KEYWORDS.txt" {"popopop", def_popopop}, #line 40 "KEYWORDS.txt" {"dip", dip}, -#line 119 "KEYWORDS.txt" +#line 123 "KEYWORDS.txt" {"popd", def_popd}, -#line 118 "KEYWORDS.txt" +#line 122 "KEYWORDS.txt" {"popdd", def_popdd}, -#line 121 "KEYWORDS.txt" +#line 125 "KEYWORDS.txt" {"popopd", def_popopd}, -#line 120 "KEYWORDS.txt" +#line 124 "KEYWORDS.txt" {"popopdd", def_popopdd}, - {""}, -#line 82 "KEYWORDS.txt" - {"dipd", def_dipd}, -#line 83 "KEYWORDS.txt" - {"dipdd", def_dipdd}, -#line 84 "KEYWORDS.txt" - {"dipddd", def_dipddd}, -#line 85 "KEYWORDS.txt" - {"disenstacken", def_disenstacken}, -#line 187 "KEYWORDS.txt" +#line 193 "KEYWORDS.txt" {"zip", def_zip}, +#line 83 "KEYWORDS.txt" + {"dipd", def_dipd}, +#line 84 "KEYWORDS.txt" + {"dipdd", def_dipdd}, +#line 85 "KEYWORDS.txt" + {"dipddd", def_dipddd}, +#line 86 "KEYWORDS.txt" + {"disenstacken", def_disenstacken}, + {""}, #line 38 "KEYWORDS.txt" {"cons", cons}, {""}, -#line 30 "KEYWORDS.txt" - {"/", fdiv_q}, -#line 164 "KEYWORDS.txt" +#line 172 "KEYWORDS.txt" + {"x", def_x}, +#line 170 "KEYWORDS.txt" {"unswons", def_unswons}, #line 41 "KEYWORDS.txt" {"dup", dup}, -#line 79 "KEYWORDS.txt" +#line 80 "KEYWORDS.txt" {"codi", def_codi}, {""}, -#line 92 "KEYWORDS.txt" +#line 93 "KEYWORDS.txt" {"dupdip", def_dupdip}, {""}, -#line 80 "KEYWORDS.txt" +#line 81 "KEYWORDS.txt" {"codireco", def_codireco}, -#line 90 "KEYWORDS.txt" +#line 91 "KEYWORDS.txt" {"dupd", def_dupd}, -#line 89 "KEYWORDS.txt" +#line 90 "KEYWORDS.txt" {"dupdd", def_dupdd}, #line 16 "KEYWORDS.txt" {">", def_gt}, -#line 91 "KEYWORDS.txt" +#line 92 "KEYWORDS.txt" {"dupdipd", def_dupdipd}, -#line 66 "KEYWORDS.txt" - {"and", def_and}, -#line 67 "KEYWORDS.txt" - {"app1", def_app1}, + {""}, {""}, #line 76 "KEYWORDS.txt" {"ccons", def_ccons}, -#line 160 "KEYWORDS.txt" +#line 166 "KEYWORDS.txt" {"uncons", def_uncons}, -#line 185 "KEYWORDS.txt" - {"\\/", def_REVERSE_SOLIDUS_SOLIDUS}, -#line 27 "KEYWORDS.txt" - {"add", add}, -#line 45 "KEYWORDS.txt" - {"loop", loop}, -#line 189 "KEYWORDS.txt" +#line 51 "KEYWORDS.txt" + {"fn", fn}, +#line 44 "KEYWORDS.txt" + {"inscribe", inscribe}, +#line 94 "KEYWORDS.txt" + {"enstacken", def_enstacken}, +#line 195 "KEYWORDS.txt" {"uncons-two", def_uncons_HYPHEN_MINUS_two}, -#line 143 "KEYWORDS.txt" - {"spiral_next", def_spiral_next}, -#line 184 "KEYWORDS.txt" - {"/\\", def_SOLIDUS_REVERSE_SOLIDUS}, - {""}, -#line 81 "KEYWORDS.txt" - {"dinfrirst", def_dinfrirst}, +#line 30 "KEYWORDS.txt" + {"/", fdiv_q}, {""}, {""}, -#line 136 "KEYWORDS.txt" +#line 146 "KEYWORDS.txt" + {"size", def_size}, + {""}, +#line 87 "KEYWORDS.txt" + {"divmod", def_divmod}, +#line 141 "KEYWORDS.txt" {">>", def_GREATER_THAN_SIGN_GREATER_THAN_SIGN}, {""}, -#line 161 "KEYWORDS.txt" +#line 155 "KEYWORDS.txt" + {"succ", def_succ}, +#line 159 "KEYWORDS.txt" + {"swons", def_swons}, +#line 148 "KEYWORDS.txt" + {"spiral_next", def_spiral_next}, +#line 75 "KEYWORDS.txt" + {"ccccons", def_ccccons}, + {""}, +#line 82 "KEYWORDS.txt" + {"dinfrirst", def_dinfrirst}, + {""}, +#line 143 "KEYWORDS.txt" + {"second", def_second}, + {""}, {""}, +#line 167 "KEYWORDS.txt" {"unit", def_unit}, {""}, #line 39 "KEYWORDS.txt" {"concat", concat}, -#line 75 "KEYWORDS.txt" - {"ccccons", def_ccccons}, -#line 149 "KEYWORDS.txt" - {"stuncons", def_stuncons}, -#line 78 "KEYWORDS.txt" - {"clop", def_clop}, -#line 110 "KEYWORDS.txt" - {"nulco", def_nulco}, - {""}, -#line 51 "KEYWORDS.txt" - {"fn", fn}, - {""}, -#line 69 "KEYWORDS.txt" - {"app3", def_app3}, - {""}, -#line 147 "KEYWORDS.txt" - {"stackd", def_stackd}, - {""}, -#line 109 "KEYWORDS.txt" - {"not", def_not}, -#line 70 "KEYWORDS.txt" - {"appN", def_appN}, - {""}, {""}, {""}, -#line 44 "KEYWORDS.txt" - {"inscribe", inscribe}, -#line 93 "KEYWORDS.txt" - {"enstacken", def_enstacken}, - {""}, -#line 28 "KEYWORDS.txt" - {"-", sub}, -#line 154 "KEYWORDS.txt" - {"tailrec", def_tailrec}, -#line 144 "KEYWORDS.txt" - {"split_at", def_split_at}, #line 88 "KEYWORDS.txt" + {"down_to_zero", def_down_to_zero}, +#line 154 "KEYWORDS.txt" + {"stuncons", def_stuncons}, +#line 89 "KEYWORDS.txt" {"drop", def_drop}, -#line 145 "KEYWORDS.txt" - {"split_list", def_split_list}, - {""}, -#line 163 "KEYWORDS.txt" - {"unstack", def_unstack}, - {""}, -#line 141 "KEYWORDS.txt" - {"size", def_size}, -#line 104 "KEYWORDS.txt" - {"infra", def_infra}, -#line 58 "KEYWORDS.txt" - {"?", def_QUESTION_MARK}, -#line 71 "KEYWORDS.txt" - {"at", def_at}, -#line 137 "KEYWORDS.txt" - {"run", def_run}, - {""}, {""}, -#line 138 "KEYWORDS.txt" - {"second", def_second}, - {""}, {""}, -#line 112 "KEYWORDS.txt" - {"null", def_null}, -#line 139 "KEYWORDS.txt" +#line 144 "KEYWORDS.txt" {"shift", def_shift}, -#line 105 "KEYWORDS.txt" - {"infrst", def_infrst}, - {""}, -#line 64 "KEYWORDS.txt" - {"abs", def_abs}, -#line 167 "KEYWORDS.txt" - {"step", def_step}, -#line 157 "KEYWORDS.txt" - {"third", def_third}, -#line 86 "KEYWORDS.txt" - {"divmod", def_divmod}, -#line 54 "KEYWORDS.txt" - {"lt", def_lt}, -#line 128 "KEYWORDS.txt" - {"range_to_zero", def_range_to_zero}, -#line 148 "KEYWORDS.txt" - {"step_zero", def_step_zero}, - {""}, -#line 26 "KEYWORDS.txt" - {"+", add}, -#line 125 "KEYWORDS.txt" - {"product", def_product}, -#line 62 "KEYWORDS.txt" - {"<{}", def_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET}, -#line 68 "KEYWORDS.txt" - {"app2", def_app2}, -#line 140 "KEYWORDS.txt" - {"shunt", def_shunt}, -#line 134 "KEYWORDS.txt" - {"rollup", def_rollup}, -#line 61 "KEYWORDS.txt" - {"--", def_HYPHEN_MINUS_HYPHEN_MINUS}, -#line 131 "KEYWORDS.txt" - {"rolldown", def_rolldown}, -#line 34 "KEYWORDS.txt" - {"bool", truthy}, -#line 48 "KEYWORDS.txt" - {"stack", stack}, -#line 166 "KEYWORDS.txt" - {"x", def_x}, -#line 113 "KEYWORDS.txt" - {"of", def_of}, -#line 23 "KEYWORDS.txt" - {"mod", fdiv_r}, - {""}, -#line 182 "KEYWORDS.txt" - {"_isnt_two_bools", def__isnt_two_bools}, - {""}, -#line 95 "KEYWORDS.txt" - {"flatten", def_flatten}, -#line 37 "KEYWORDS.txt" - {"cmp", cmp_joyfunc}, -#line 158 "KEYWORDS.txt" - {"tuck", def_tuck}, -#line 133 "KEYWORDS.txt" - {"roll>", def_roll_GREATER_THAN_SIGN}, -#line 15 "KEYWORDS.txt" - {"=", def_eq}, - {""}, -#line 175 "KEYWORDS.txt" - {"map", def_map}, - {""}, -#line 159 "KEYWORDS.txt" - {"unary", def_unary}, -#line 32 "KEYWORDS.txt" - {"lshift", lshift}, -#line 19 "KEYWORDS.txt" - {"<>", def_neq}, -#line 98 "KEYWORDS.txt" - {"gcd", def_gcd}, -#line 94 "KEYWORDS.txt" - {"first_two", def_first_two}, -#line 188 "KEYWORDS.txt" - {"shift-pair", def_shift_HYPHEN_MINUS_pair}, -#line 97 "KEYWORDS.txt" - {"fourth", def_fourth}, -#line 114 "KEYWORDS.txt" - {"or", def_or}, - {""}, -#line 190 "KEYWORDS.txt" - {"quote-two", def_quote_HYPHEN_MINUS_two}, -#line 171 "KEYWORDS.txt" - {"times", def_times}, -#line 126 "KEYWORDS.txt" - {"quoted", def_quoted}, -#line 21 "KEYWORDS.txt" - {">=", def_ge}, -#line 162 "KEYWORDS.txt" - {"unquoted", def_unquoted}, - {""}, -#line 186 "KEYWORDS.txt" - {"_isnt_list", def__isnt_list}, -#line 73 "KEYWORDS.txt" - {"b", def_b}, -#line 111 "KEYWORDS.txt" - {"nullary", def_nullary}, - {""}, -#line 129 "KEYWORDS.txt" - {"reco", def_reco}, -#line 181 "KEYWORDS.txt" - {"_isnt_bool", def__isnt_bool}, -#line 169 "KEYWORDS.txt" - {"_step1", def__step1}, -#line 173 "KEYWORDS.txt" - {"_times1", def__times1}, - {""}, -#line 102 "KEYWORDS.txt" - {"ifte", def_ifte}, -#line 127 "KEYWORDS.txt" - {"range", def_range}, -#line 65 "KEYWORDS.txt" - {"anamorphism", def_anamorphism}, -#line 60 "KEYWORDS.txt" - {"++", def_PLUS_SIGN_PLUS_SIGN}, {""}, {""}, -#line 42 "KEYWORDS.txt" - {"first", first}, -#line 33 "KEYWORDS.txt" - {"rshift", rshift}, -#line 56 "KEYWORDS.txt" - {"le", def_le}, -#line 29 "KEYWORDS.txt" - {"sub", sub}, -#line 47 "KEYWORDS.txt" - {"rest", rest}, -#line 142 "KEYWORDS.txt" - {"small", def_small}, -#line 74 "KEYWORDS.txt" - {"binary", def_binary}, -#line 53 "KEYWORDS.txt" - {"gt", def_gt}, - {""}, {""}, -#line 153 "KEYWORDS.txt" - {"swons", def_swons}, -#line 170 "KEYWORDS.txt" - {"_stept", def__stept}, -#line 174 "KEYWORDS.txt" - {"_timest", def__timest}, #line 31 "KEYWORDS.txt" {"div", fdiv_q}, -#line 155 "KEYWORDS.txt" - {"take", def_take}, - {""}, -#line 168 "KEYWORDS.txt" - {"_step0", def__step0}, -#line 172 "KEYWORDS.txt" - {"_times0", def__times0}, - {""}, {""}, {""}, +#line 45 "KEYWORDS.txt" + {"loop", loop}, +#line 163 "KEYWORDS.txt" + {"third", def_third}, #line 77 "KEYWORDS.txt" - {"cleave", def_cleave}, -#line 87 "KEYWORDS.txt" - {"down_to_zero", def_down_to_zero}, + {"choice", def_choice}, +#line 116 "KEYWORDS.txt" + {"of", def_of}, +#line 142 "KEYWORDS.txt" + {"run", def_run}, +#line 173 "KEYWORDS.txt" + {"step", def_step}, {""}, -#line 96 "KEYWORDS.txt" - {"fork", def_fork}, -#line 36 "KEYWORDS.txt" - {"clear", clear}, +#line 98 "KEYWORDS.txt" + {"fourth", def_fourth}, + {""}, {""}, +#line 153 "KEYWORDS.txt" + {"step_zero", def_step_zero}, +#line 145 "KEYWORDS.txt" + {"shunt", def_shunt}, +#line 107 "KEYWORDS.txt" + {"infrst", def_infrst}, + {""}, +#line 112 "KEYWORDS.txt" + {"not", def_not}, +#line 79 "KEYWORDS.txt" + {"clop", def_clop}, +#line 113 "KEYWORDS.txt" + {"nulco", def_nulco}, + {""}, {""}, +#line 201 "KEYWORDS.txt" + {"min", def_min}, + {""}, +#line 188 "KEYWORDS.txt" + {"_isnt_two_bools", def__isnt_two_bools}, +#line 26 "KEYWORDS.txt" + {"+", add}, +#line 158 "KEYWORDS.txt" + {"swoncat", def_swoncat}, +#line 128 "KEYWORDS.txt" + {"pow", def_pow}, +#line 129 "KEYWORDS.txt" + {"pred", def_pred}, +#line 200 "KEYWORDS.txt" + {"min-of-two", def_min_HYPHEN_MINUS_of_HYPHEN_MINUS_two}, +#line 194 "KEYWORDS.txt" + {"uncons-pair", def_uncons_HYPHEN_MINUS_pair}, +#line 110 "KEYWORDS.txt" + {"modulus", def_modulus}, +#line 23 "KEYWORDS.txt" + {"mod", fdiv_r}, +#line 95 "KEYWORDS.txt" + {"first_two", def_first_two}, +#line 171 "KEYWORDS.txt" + {"while", def_while}, +#line 24 "KEYWORDS.txt" + {"*", mul}, +#line 130 "KEYWORDS.txt" + {"product", def_product}, +#line 37 "KEYWORDS.txt" + {"cmp", cmp_joyfunc}, +#line 134 "KEYWORDS.txt" + {"reco", def_reco}, + {""}, {""}, +#line 19 "KEYWORDS.txt" + {"<>", def_neq}, +#line 62 "KEYWORDS.txt" + {"<{}", def_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET}, +#line 104 "KEYWORDS.txt" + {"ifte", def_ifte}, + {""}, +#line 58 "KEYWORDS.txt" + {"?", def_QUESTION_MARK}, +#line 117 "KEYWORDS.txt" + {"or", def_or}, +#line 149 "KEYWORDS.txt" + {"split_at", def_split_at}, +#line 120 "KEYWORDS.txt" + {"pick", def_pick}, +#line 150 "KEYWORDS.txt" + {"split_list", def_split_list}, + {""}, +#line 169 "KEYWORDS.txt" + {"unstack", def_unstack}, +#line 66 "KEYWORDS.txt" + {"and", def_and}, +#line 118 "KEYWORDS.txt" + {"over", def_over}, + {""}, +#line 33 "KEYWORDS.txt" + {"rshift", rshift}, +#line 191 "KEYWORDS.txt" + {"\\/", def_REVERSE_SOLIDUS_SOLIDUS}, +#line 27 "KEYWORDS.txt" + {"add", add}, +#line 70 "KEYWORDS.txt" + {"appN", def_appN}, +#line 192 "KEYWORDS.txt" + {"_isnt_list", def__isnt_list}, +#line 139 "KEYWORDS.txt" + {"rollup", def_rollup}, +#line 56 "KEYWORDS.txt" + {"le", def_le}, +#line 136 "KEYWORDS.txt" + {"rolldown", def_rolldown}, +#line 47 "KEYWORDS.txt" + {"rest", rest}, +#line 177 "KEYWORDS.txt" + {"times", def_times}, +#line 32 "KEYWORDS.txt" + {"lshift", lshift}, + {""}, {""}, +#line 196 "KEYWORDS.txt" + {"quote-two", def_quote_HYPHEN_MINUS_two}, +#line 42 "KEYWORDS.txt" + {"first", first}, +#line 131 "KEYWORDS.txt" + {"quoted", def_quoted}, +#line 60 "KEYWORDS.txt" + {"++", def_PLUS_SIGN_PLUS_SIGN}, +#line 168 "KEYWORDS.txt" + {"unquoted", def_unquoted}, +#line 34 "KEYWORDS.txt" + {"bool", truthy}, +#line 138 "KEYWORDS.txt" + {"roll>", def_roll_GREATER_THAN_SIGN}, +#line 73 "KEYWORDS.txt" + {"b", def_b}, +#line 202 "KEYWORDS.txt" + {"on-non-empty-list", def_on_HYPHEN_MINUS_non_HYPHEN_MINUS_empty_HYPHEN_MINUS_list}, #line 99 "KEYWORDS.txt" - {"genrec", def_genrec}, -#line 59 "KEYWORDS.txt" - {"!-", def_EXCLAMATION_MARK_HYPHEN_MINUS}, + {"gcd", def_gcd}, +#line 68 "KEYWORDS.txt" + {"app2", def_app2}, +#line 106 "KEYWORDS.txt" + {"infra", def_infra}, +#line 78 "KEYWORDS.txt" + {"cleave", def_cleave}, +#line 54 "KEYWORDS.txt" + {"lt", def_lt}, + {""}, +#line 115 "KEYWORDS.txt" + {"null", def_null}, +#line 187 "KEYWORDS.txt" + {"_isnt_bool", def__isnt_bool}, +#line 17 "KEYWORDS.txt" + {"<", def_lt}, +#line 135 "KEYWORDS.txt" + {"reverse", def_reverse}, {""}, #line 50 "KEYWORDS.txt" {"swap", swap}, - {""}, {""}, {""}, -#line 25 "KEYWORDS.txt" - {"mul", mul}, {""}, -#line 151 "KEYWORDS.txt" - {"swapd", def_swapd}, -#line 17 "KEYWORDS.txt" - {"<", def_lt}, - {""}, {""}, {""}, {""}, {""}, #line 152 "KEYWORDS.txt" - {"swoncat", def_swoncat}, + {"stackd", def_stackd}, + {""}, +#line 29 "KEYWORDS.txt" + {"sub", sub}, +#line 69 "KEYWORDS.txt" + {"app3", def_app3}, +#line 157 "KEYWORDS.txt" + {"swapd", def_swapd}, +#line 176 "KEYWORDS.txt" + {"_stept", def__stept}, +#line 180 "KEYWORDS.txt" + {"_timest", def__timest}, + {""}, {""}, {""}, +#line 100 "KEYWORDS.txt" + {"genrec", def_genrec}, +#line 160 "KEYWORDS.txt" + {"tailrec", def_tailrec}, + {""}, +#line 164 "KEYWORDS.txt" + {"tuck", def_tuck}, +#line 36 "KEYWORDS.txt" + {"clear", clear}, +#line 28 "KEYWORDS.txt" + {"-", sub}, +#line 121 "KEYWORDS.txt" + {"pm", def_pm}, +#line 133 "KEYWORDS.txt" + {"range_to_zero", def_range_to_zero}, + {""}, {""}, +#line 197 "KEYWORDS.txt" + {"empty?", def_empty_QUESTION_MARK}, +#line 57 "KEYWORDS.txt" + {"ge", def_ge}, +#line 64 "KEYWORDS.txt" + {"abs", def_abs}, + {""}, {""}, +#line 74 "KEYWORDS.txt" + {"binary", def_binary}, +#line 190 "KEYWORDS.txt" + {"/\\", def_SOLIDUS_REVERSE_SOLIDUS}, {""}, #line 63 "KEYWORDS.txt" {"<<{}", def_LESS_THAN_SIGN_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET}, -#line 132 "KEYWORDS.txt" - {"roll<", def_roll_LESS_THAN_SIGN}, -#line 24 "KEYWORDS.txt" - {"*", mul}, -#line 117 "KEYWORDS.txt" - {"pm", def_pm}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 115 "KEYWORDS.txt" - {"over", def_over}, +#line 140 "KEYWORDS.txt" + {"rrest", def_rrest}, + {""}, +#line 71 "KEYWORDS.txt" + {"at", def_at}, +#line 156 "KEYWORDS.txt" + {"sum", def_sum}, +#line 97 "KEYWORDS.txt" + {"fork", def_fork}, {""}, #line 22 "KEYWORDS.txt" {"%", fdiv_r}, - {""}, {""}, {""}, {""}, -#line 35 "KEYWORDS.txt" - {"branch", branch}, -#line 20 "KEYWORDS.txt" - {"<=", def_le}, -#line 150 "KEYWORDS.txt" - {"sum", def_sum}, - {""}, {""}, {""}, -#line 57 "KEYWORDS.txt" - {"ge", def_ge}, -#line 116 "KEYWORDS.txt" - {"pam", def_pam}, +#line 114 "KEYWORDS.txt" + {"nullary", def_nullary}, +#line 181 "KEYWORDS.txt" + {"map", def_map}, +#line 67 "KEYWORDS.txt" + {"app1", def_app1}, +#line 132 "KEYWORDS.txt" + {"range", def_range}, {""}, -#line 135 "KEYWORDS.txt" - {"rrest", def_rrest}, +#line 53 "KEYWORDS.txt" + {"gt", def_gt}, + {""}, {""}, +#line 137 "KEYWORDS.txt" + {"roll<", def_roll_LESS_THAN_SIGN}, {""}, #line 72 "KEYWORDS.txt" {"average", def_average}, - {""}, -#line 183 "KEYWORDS.txt" - {"_\\/_", def___REVERSE_SOLIDUS_SOLIDUS__}, -#line 100 "KEYWORDS.txt" - {"grabN", def_grabN}, - {""}, -#line 18 "KEYWORDS.txt" - {"!=", def_neq}, - {""}, {""}, + {""}, {""}, {""}, +#line 175 "KEYWORDS.txt" + {"_step1", def__step1}, #line 179 "KEYWORDS.txt" - {"_map1", def__map1}, - {""}, {""}, {""}, {""}, {""}, -#line 49 "KEYWORDS.txt" - {"swaack", swaack}, + {"_times1", def__times1}, + {""}, {""}, +#line 198 "KEYWORDS.txt" + {"max-of-two", def_max_HYPHEN_MINUS_of_HYPHEN_MINUS_two}, {""}, -#line 146 "KEYWORDS.txt" +#line 96 "KEYWORDS.txt" + {"flatten", def_flatten}, +#line 199 "KEYWORDS.txt" + {"max", def_max}, + {""}, {""}, +#line 174 "KEYWORDS.txt" + {"_step0", def__step0}, +#line 178 "KEYWORDS.txt" + {"_times0", def__times0}, + {""}, {""}, {""}, {""}, +#line 59 "KEYWORDS.txt" + {"!-", def_EXCLAMATION_MARK_HYPHEN_MINUS}, +#line 151 "KEYWORDS.txt" {"sqr", def_sqr}, {""}, {""}, {""}, -#line 156 "KEYWORDS.txt" - {"ternary", def_ternary}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 107 "KEYWORDS.txt" - {"make_generator", def_make_generator}, - {""}, {""}, {""}, {""}, -#line 101 "KEYWORDS.txt" - {"grba", def_grba}, -#line 178 "KEYWORDS.txt" - {"_map0", def__map0}, - {""}, {""}, #line 108 "KEYWORDS.txt" - {"neg", def_neg}, - {""}, -#line 176 "KEYWORDS.txt" - {"_map?", def__map_QUESTION_MARK}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 130 "KEYWORDS.txt" - {"reverse", def_reverse}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"<<", def_LESS_THAN_SIGN_LESS_THAN_SIGN}, + {""}, {""}, #line 165 "KEYWORDS.txt" - {"while", def_while}, + {"unary", def_unary}, +#line 15 "KEYWORDS.txt" + {"=", def_eq}, {""}, +#line 25 "KEYWORDS.txt" + {"mul", mul}, + {""}, {""}, {""}, +#line 162 "KEYWORDS.txt" + {"ternary", def_ternary}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 48 "KEYWORDS.txt" + {"stack", stack}, + {""}, +#line 21 "KEYWORDS.txt" + {">=", def_ge}, + {""}, {""}, {""}, +#line 49 "KEYWORDS.txt" + {"swaack", swaack}, #line 52 "KEYWORDS.txt" {"eq", def_eq}, #line 55 "KEYWORDS.txt" {"neq", def_neq}, +#line 189 "KEYWORDS.txt" + {"_\\/_", def___REVERSE_SOLIDUS_SOLIDUS__}, {""}, -#line 177 "KEYWORDS.txt" +#line 35 "KEYWORDS.txt" + {"branch", branch}, +#line 61 "KEYWORDS.txt" + {"--", def_HYPHEN_MINUS_HYPHEN_MINUS}, + {""}, {""}, +#line 147 "KEYWORDS.txt" + {"small", def_small}, + {""}, {""}, +#line 111 "KEYWORDS.txt" + {"neg", def_neg}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 161 "KEYWORDS.txt" + {"take", def_take}, + {""}, {""}, +#line 101 "KEYWORDS.txt" + {"getitem", def_getitem}, +#line 119 "KEYWORDS.txt" + {"pam", def_pam}, + {""}, {""}, {""}, +#line 18 "KEYWORDS.txt" + {"!=", def_neq}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 102 "KEYWORDS.txt" + {"grabN", def_grabN}, + {""}, {""}, {""}, {""}, +#line 183 "KEYWORDS.txt" {"_mape", def__mape}, - {""}, -#line 106 "KEYWORDS.txt" - {"<<", def_LESS_THAN_SIGN_LESS_THAN_SIGN}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 180 "KEYWORDS.txt" + {""}, {""}, {""}, {""}, +#line 186 "KEYWORDS.txt" {"_map2", def__map2}, +#line 65 "KEYWORDS.txt" + {"anamorphism", def_anamorphism}, +#line 20 "KEYWORDS.txt" + {"<=", def_le}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 124 "KEYWORDS.txt" - {"pow", def_pow} +#line 182 "KEYWORDS.txt" + {"_map?", def__map_QUESTION_MARK}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 103 "KEYWORDS.txt" + {"grba", def_grba}, + {""}, {""}, {""}, {""}, +#line 109 "KEYWORDS.txt" + {"make_generator", def_make_generator}, +#line 185 "KEYWORDS.txt" + {"_map1", def__map1}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 184 "KEYWORDS.txt" + {"_map0", def__map0} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) diff --git a/implementations/defs.txt b/implementations/defs.txt index 45dd96b..a2ada1e 100644 --- a/implementations/defs.txt +++ b/implementations/defs.txt @@ -150,3 +150,9 @@ zip [null] [pop] [uncons-pair] [i cons] genrec uncons-pair uncons-two [quote-two] dipd uncons-two [uncons] ii swapd quote-two unit cons +empty? dup null +max-of-two [>] [pop] [popd] ifte +max [uncons [max-of-two] step] on-non-empty-list +min-of-two [<] [pop] [popd] ifte +min [uncons [min-of-two] step] on-non-empty-list +on-non-empty-list [empty?] dip [first] branch diff --git a/implementations/scheme-chicken/defs.scm b/implementations/scheme-chicken/defs.scm index eb9c923..554a38c 100644 --- a/implementations/scheme-chicken/defs.scm +++ b/implementations/scheme-chicken/defs.scm @@ -1 +1 @@ -(define (defs) (list "eq [false] [true] [false] cmp" "gt [true] [false] [false] cmp" "lt [false] [false] [true] cmp" "neq [true] [false] [true] cmp" "le [false] [true] [true] cmp" "ge [true] [true] [false] cmp" "? dup bool" "!- 0 >=" "++ 1 +" "-- 1 -" "<{} [] swap" "<<{} [] rollup" "abs dup 0 < [] [neg] branch" "anamorphism [pop []] swap [dip swons] genrec" "and nulco [nullary [false]] dip branch" "app1 grba infrst" "app2 [grba swap grba swap] dip [infrst] cons ii" "app3 3 appN" "appN [grabN] codi map reverse disenstacken" "at drop first" "average [sum] [size] cleave /" "b [i] dip i" "binary unary popd" "ccccons ccons ccons" "ccons cons cons" "clear [] swaack pop" "cleave fork popdd" "clop cleave popdd" "cmp [[>] swap] dipd [ifte] ccons [=] swons ifte" "codi cons dip" "codireco codi reco" "dinfrirst dip infrst" "dipd [dip] codi" "dipdd [dip] cons dipd" "dipddd [dipd] cons dipd" "disenstacken swaack pop" "divmod [/] [%] clop" "down_to_zero [0 >] [dup --] while" "drop [rest] times" "dupdd [dup] dipd" "dupd [dup] dip" "dupdipd dup dipd" "dupdip dupd dip" "enstacken stack [clear] dip" "first uncons pop" "first_two uncons first" "flatten <{} [concat] step" "fork [i] app2" "fourth rest third" "gcd true [tuck mod dup 0 >] loop pop" "genrec [[genrec] ccccons] nullary swons concat ifte" "grabN <{} [cons] times" "grba [stack popd] dip" "ifte [nullary] dipd swap branch" "ii [dip] dupdip i" "infra swons swaack [i] dip swaack" "infrst infra first" "<< lshift" "lshift [2 *] times" "make_generator [codireco] ccons" "mod %" "neg 0 swap -" "not [true] [false] branch" "nulco [nullary] cons" "nullary [stack] dinfrirst" "null _isnt_list bool not" "of swap at" "or nulco [nullary] dip [true] branch" "over [dup] dip swap" "pam [i] map" "pm [+] [-] clop" "popdd [pop] dipd" "popd [pop] dip" "popopdd [popop] dipd" "popopd [popop] dip" "popopop pop popop" "popop pop pop" "pow 1 roll> swap [*] cons times" "product 1 swap [*] step" "quoted [unit] dip" "range [0 <=] [-- dup] anamorphism" "range_to_zero unit [down_to_zero] infra" "reco rest cons" "rest uncons popd" "reverse <{} shunt" "rolldown roll<" "roll< swapd swap" "roll> swap swapd" "rollup roll>" "rrest rest rest" ">> rshift" "rshift [2 /] times" "run <{} infra" "second rest first" "shift uncons [swons] dip" "shunt [swons] step" "size [pop ++] step_zero" "small dup null [rest null] [pop true] branch" "spiral_next [[[abs] ii <=] [[<>] [pop !-] or] and] [[!-] [[++]] [[--]] ifte dip] [[pop !-] [--] [++] ifte] ifte" "split_at [drop] [take] clop" "split_list [take reverse] [drop] clop" "sqr dup mul" "stackd [stack] dip" "step_zero 0 roll> step" "stuncons stack uncons" "sum [+] step_zero" "swapd [swap] dip" "swoncat swap concat" "swons swap cons" "tailrec [i] genrec" "take <<{} [shift] times pop" "ternary binary popd" "third rest second" "tuck dup swapd" "unary nullary popd" "uncons [first] dupdip rest" "unit [] cons" "unquoted [i] dip" "unstack [[] swaack] dip swoncat swaack pop" "unswons uncons swap" "while swap nulco dupdipd concat loop" "x dup i" "step [_step0] x" "_step0 _step1 [popopop] [_stept] branch" "_step1 [?] dipd roll<" "_stept [uncons] dipd [dupdipd] dip x" "times [_times0] x" "_times0 _times1 [popopop] [_timest] branch" "_times1 [dup 0 >] dipd roll<" "_timest [[--] dip dupdipd] dip x" "map [_map0] cons [[] [_map?] [_mape]] dip tailrec" "_map? pop bool not" "_mape popd reverse" "_map0 [_map1] dipd _map2" "_map1 stackd shift" "_map2 [infrst] cons dipd roll< swons" "_isnt_bool [false] [true] branch" "_isnt_two_bools [_isnt_bool] ii" "_\\/_ [_isnt_bool] [not] branch" "/\\ _isnt_two_bools [pop false] [] branch" "\\/ _isnt_two_bools [] [pop true] branch" "_isnt_list [] swoncat" "zip [null] [pop] [shift-pair] [i cons] genrec" "shift-pair uncons-two [quote-two] dipd" "uncons-two [uncons] ii swapd" "quote-two unit cons")) \ No newline at end of file +(define (defs) (list "eq [false] [true] [false] cmp" "gt [true] [false] [false] cmp" "lt [false] [false] [true] cmp" "neq [true] [false] [true] cmp" "le [false] [true] [true] cmp" "ge [true] [true] [false] cmp" "? dup bool" "!- 0 >=" "++ 1 +" "-- 1 -" "<{} [] swap" "<<{} [] rollup" "abs dup 0 < [] [neg] branch" "anamorphism [pop []] swap [dip swons] genrec" "and nulco [nullary [false]] dip branch" "app1 grba infrst" "app2 [grba swap grba swap] dip [infrst] cons ii" "app3 3 appN" "appN [grabN] codi map reverse disenstacken" "at drop first" "average [sum] [size] cleave /" "b [i] dip i" "binary unary popd" "ccccons ccons ccons" "ccons cons cons" "choice [pop] [popd] branch" "clear [] swaack pop" "cleave fork popdd" "clop cleave popdd" "cmp [[>] swap] dipd [ifte] ccons [=] swons ifte" "codi cons dip" "codireco codi reco" "dinfrirst dip infrst" "dipd [dip] codi" "dipdd [dip] cons dipd" "dipddd [dipd] cons dipd" "disenstacken swaack pop" "divmod [/] [%] clop" "down_to_zero [0 >] [dup --] while" "drop [rest] times" "dupdd [dup] dipd" "dupd [dup] dip" "dupdipd dup dipd" "dupdip dupd dip" "enstacken stack [clear] dip" "first uncons pop" "first_two uncons first" "flatten <{} [concat] step" "fork [i] app2" "fourth rest third" "gcd true [tuck mod dup 0 >] loop pop" "genrec [[genrec] ccccons] nullary swons concat ifte" "getitem [rest] times first" "grabN <{} [cons] times" "grba [stack popd] dip" "ifte [nullary] dipd swap branch" "ii [dip] dupdip i" "infra swons swaack [i] dip swaack" "infrst infra first" "<< lshift" "lshift [2 *] times" "make_generator [codireco] ccons" "mod %" "modulus %" "neg 0 swap -" "not [true] [false] branch" "nulco [nullary] cons" "nullary [stack] dinfrirst" "null _isnt_list bool not" "of swap at" "or nulco [nullary] dip [true] branch" "over [dup] dip swap" "pam [i] map" "pick getitem" "pm [+] [-] clop" "popdd [pop] dipd" "popd [pop] dip" "popopdd [popop] dipd" "popopd [popop] dip" "popopop pop popop" "popop pop pop" "pow 1 roll> swap [*] cons times" "pred --" "product 1 swap [*] step" "quoted [unit] dip" "range [0 <=] [-- dup] anamorphism" "range_to_zero unit [down_to_zero] infra" "reco rest cons" "rest uncons popd" "reverse <{} shunt" "rolldown roll<" "roll< swapd swap" "roll> swap swapd" "rollup roll>" "rrest rest rest" ">> rshift" "rshift [2 /] times" "run <{} infra" "second rest first" "shift uncons [swons] dip" "shunt [swons] step" "size [pop ++] step_zero" "small dup null [rest null] [pop true] branch" "spiral_next [[[abs] ii <=] [[<>] [pop !-] or] and] [[!-] [[++]] [[--]] ifte dip] [[pop !-] [--] [++] ifte] ifte" "split_at [drop] [take] clop" "split_list [take reverse] [drop] clop" "sqr dup mul" "stackd [stack] dip" "step_zero 0 roll> step" "stuncons stack uncons" "succ --" "sum [+] step_zero" "swapd [swap] dip" "swoncat swap concat" "swons swap cons" "tailrec [i] genrec" "take <<{} [shift] times pop" "ternary binary popd" "third rest second" "tuck dup swapd" "unary nullary popd" "uncons [first] dupdip rest" "unit [] cons" "unquoted [i] dip" "unstack [[] swaack] dip swoncat swaack pop" "unswons uncons swap" "while swap nulco dupdipd concat loop" "x dup i" "step [_step0] x" "_step0 _step1 [popopop] [_stept] branch" "_step1 [?] dipd roll<" "_stept [uncons] dipd [dupdipd] dip x" "times [_times0] x" "_times0 _times1 [popopop] [_timest] branch" "_times1 [dup 0 >] dipd roll<" "_timest [[--] dip dupdipd] dip x" "map [_map0] cons [[] [_map?] [_mape]] dip tailrec" "_map? pop bool not" "_mape popd reverse" "_map0 [_map1] dipd _map2" "_map1 stackd shift" "_map2 [infrst] cons dipd roll< swons" "_isnt_bool [false] [true] branch" "_isnt_two_bools [_isnt_bool] ii" "_\\/_ [_isnt_bool] [not] branch" "/\\ _isnt_two_bools [pop false] [] branch" "\\/ _isnt_two_bools [] [pop true] branch" "_isnt_list [] swoncat" "zip [null] [pop] [uncons-pair] [i cons] genrec" "uncons-pair uncons-two [quote-two] dipd" "uncons-two [uncons] ii swapd" "quote-two unit cons" "empty? dup null" "max-of-two [>] [pop] [popd] ifte" "max empty? [uncons [max-of-two] step] [] branch")) \ No newline at end of file