OSDN Git Service

Nerd Sniped
authorsforman <sforman@hushmail.com>
Mon, 9 Oct 2023 18:44:13 +0000 (11:44 -0700)
committersforman <sforman@hushmail.com>
Mon, 9 Oct 2023 18:44:13 +0000 (11:44 -0700)
docs/html/notebooks/NerdSnipe.html
docs/source/notebooks/NerdSnipe.md
implementations/C/KEYWORDS.txt
implementations/C/definitions.c
implementations/C/definitions.h
implementations/C/defs.txt
implementations/C/keywords.c
implementations/defs.txt

index 2a379c6..b378869 100644 (file)
@@ -138,7 +138,10 @@ sum
 </code></pre>
 <h3>≡ <code>reverse-range-++</code></h3>
 <p>Let's golf it a little.  There is a version of <code>range</code> that generates its result list in reverse order, which would allow us to get rid of that <code>reverse</code> in the expression, and I bet we could modify that to generate them already incremented too.  Let's assume we've done that already and call it <code>reverse-range-++</code>, why not?</p>
-<pre><code>[reverse-range-++ range [++] map reverse] inscribe
+<pre><code>reverse-range-++ == range [++] map reverse
+</code></pre>
+<p>See: <a href="https://joypy.osdn.io/notebooks/Recursion_Combinators.html#range-with-h4"><code>range</code> with <code>H4</code> in the Recursion Combinators notebook</a>.</p>
+<pre><code>[reverse-range-++ [] swap [1 &lt;=] [pop] [[swons] dupdip --] tailrec] inscribe
 </code></pre>
 <p>Then:</p>
 <pre><code>dup size
index f50e6b7..f6eb9ec 100644 (file)
@@ -149,8 +149,12 @@ Let's reformat:
 
 Let's golf it a little.  There is a version of `range` that generates its result list in reverse order, which would allow us to get rid of that `reverse` in the expression, and I bet we could modify that to generate them already incremented too.  Let's assume we've done that already and call it `reverse-range-++`, why not?
 
-    [reverse-range-++ range [++] map reverse] inscribe
+    reverse-range-++ == range [++] map reverse
 
+See: [`range` with `H4` in the Recursion Combinators notebook](https://joypy.osdn.io/notebooks/Recursion_Combinators.html#range-with-h4).
+
+    [reverse-range-++ [] swap [1 <=] [pop] [[swons] dupdip --] tailrec] inscribe
+    
 Then:
 
     dup size
index e079181..19d3f79 100644 (file)
@@ -80,6 +80,8 @@ codi, def_codi
 codireco, def_codireco
 dinfrirst, def_dinfrirst
 dipd, def_dipd
+dipdd, def_dipdd
+dipddd, def_dipddd
 disenstacken, def_disenstacken
 divmod, def_divmod
 down_to_zero, def_down_to_zero
@@ -89,6 +91,7 @@ dupd, def_dupd
 dupdipd, def_dupdipd
 dupdip, def_dupdip
 enstacken, def_enstacken
+first_two, def_first_two
 flatten, def_flatten
 fork, def_fork
 fourth, def_fourth
@@ -96,7 +99,6 @@ gcd, def_gcd
 genrec, def_genrec
 grabN, def_grabN
 grba, def_grba
-hypot, def_hypot
 ifte, def_ifte
 ii, def_ii
 infra, def_infra
@@ -181,4 +183,8 @@ _isnt_two_bools, def__isnt_two_bools
 _\/_, def___REVERSE_SOLIDUS_SOLIDUS__
 /\, def_SOLIDUS_REVERSE_SOLIDUS
 \/, def_REVERSE_SOLIDUS_SOLIDUS
-xor, def_xor
+_isnt_list, def__isnt_list
+zip, def_zip
+shift-pair, def_shift_HYPHEN_MINUS_pair
+uncons-two, def_uncons_HYPHEN_MINUS_two
+quote-two, def_quote_HYPHEN_MINUS_two
index 12ec81e..bfd0a20 100644 (file)
@@ -43,6 +43,8 @@ JoyList def_codi_body;
 JoyList def_codireco_body;
 JoyList def_dinfrirst_body;
 JoyList def_dipd_body;
+JoyList def_dipdd_body;
+JoyList def_dipddd_body;
 JoyList def_disenstacken_body;
 JoyList def_divmod_body;
 JoyList def_down_to_zero_body;
@@ -52,6 +54,7 @@ JoyList def_dupd_body;
 JoyList def_dupdipd_body;
 JoyList def_dupdip_body;
 JoyList def_enstacken_body;
+JoyList def_first_two_body;
 JoyList def_flatten_body;
 JoyList def_fork_body;
 JoyList def_fourth_body;
@@ -59,7 +62,6 @@ JoyList def_gcd_body;
 JoyList def_genrec_body;
 JoyList def_grabN_body;
 JoyList def_grba_body;
-JoyList def_hypot_body;
 JoyList def_ifte_body;
 JoyList def_ii_body;
 JoyList def_infra_body;
@@ -144,7 +146,11 @@ JoyList def__isnt_two_bools_body;
 JoyList def___REVERSE_SOLIDUS_SOLIDUS___body;
 JoyList def_SOLIDUS_REVERSE_SOLIDUS_body;
 JoyList def_REVERSE_SOLIDUS_SOLIDUS_body;
-JoyList def_xor_body;
+JoyList def__isnt_list_body;
+JoyList def_zip_body;
+JoyList def_shift_HYPHEN_MINUS_pair_body;
+JoyList def_uncons_HYPHEN_MINUS_two_body;
+JoyList def_quote_HYPHEN_MINUS_two_body;
 
 
 /*
@@ -186,6 +192,8 @@ init_defs(void)
        def_codireco_body = text_to_expression("codi reco");
        def_dinfrirst_body = text_to_expression("dip infrst");
        def_dipd_body = text_to_expression("[dip] codi");
+       def_dipdd_body = text_to_expression("[dip] cons dipd");
+       def_dipddd_body = text_to_expression("[dipd] cons dipd");
        def_disenstacken_body = text_to_expression("swaack pop");
        def_divmod_body = text_to_expression("[/] [%] clop");
        def_down_to_zero_body = text_to_expression("[0 >] [dup --] while");
@@ -195,6 +203,7 @@ init_defs(void)
        def_dupdipd_body = text_to_expression("dup dipd");
        def_dupdip_body = text_to_expression("dupd dip");
        def_enstacken_body = text_to_expression("stack [clear] dip");
+       def_first_two_body = text_to_expression("uncons first");
        def_flatten_body = text_to_expression("<{} [concat] step");
        def_fork_body = text_to_expression("[i] app2");
        def_fourth_body = text_to_expression("rest third");
@@ -202,7 +211,6 @@ init_defs(void)
        def_genrec_body = text_to_expression("[[genrec] ccccons] nullary swons concat ifte");
        def_grabN_body = text_to_expression("<{} [cons] times");
        def_grba_body = text_to_expression("[stack popd] dip");
-       def_hypot_body = text_to_expression("[sqr] ii + sqrt");
        def_ifte_body = text_to_expression("[nullary] dipd swap branch");
        def_ii_body = text_to_expression("[dip] dupdip i");
        def_infra_body = text_to_expression("swons swaack [i] dip swaack");
@@ -213,7 +221,7 @@ init_defs(void)
        def_not_body = text_to_expression("[true] [false] branch");
        def_nulco_body = text_to_expression("[nullary] cons");
        def_nullary_body = text_to_expression("[stack] dinfrirst");
-       def_null_body = text_to_expression("[] swap concat bool not");
+       def_null_body = text_to_expression("_isnt_list bool not");
        def_of_body = text_to_expression("swap at");
        def_or_body = text_to_expression("nulco [nullary] dip [true] branch");
        def_over_body = text_to_expression("[dup] dip swap");
@@ -282,12 +290,16 @@ init_defs(void)
        def__map0_body = text_to_expression("[_map1] dipd _map2");
        def__map1_body = text_to_expression("stackd shift");
        def__map2_body = text_to_expression("[infrst] cons dipd roll< swons");
-       def__isnt_bool_body = text_to_expression("not not");
+       def__isnt_bool_body = text_to_expression("[false] [true] branch");
        def__isnt_two_bools_body = text_to_expression("[_isnt_bool] ii");
        def___REVERSE_SOLIDUS_SOLIDUS___body = text_to_expression("[_isnt_bool] [not] branch");
        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_xor_body = text_to_expression("[] [not] 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_uncons_HYPHEN_MINUS_two_body = text_to_expression("[uncons] ii swapd");
+       def_quote_HYPHEN_MINUS_two_body = text_to_expression("unit cons");
 }
 
 
@@ -326,6 +338,8 @@ void def_codi(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) {
 void def_codireco(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_codireco_body, expression); }
 void def_dinfrirst(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_dinfrirst_body, expression); }
 void def_dipd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_dipd_body, expression); }
+void def_dipdd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_dipdd_body, expression); }
+void def_dipddd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_dipddd_body, expression); }
 void def_disenstacken(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_disenstacken_body, expression); }
 void def_divmod(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_divmod_body, expression); }
 void def_down_to_zero(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_down_to_zero_body, expression); }
@@ -335,6 +349,7 @@ void def_dupd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) {
 void def_dupdipd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_dupdipd_body, expression); }
 void def_dupdip(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_dupdip_body, expression); }
 void def_enstacken(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_enstacken_body, expression); }
+void def_first_two(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_first_two_body, expression); }
 void def_flatten(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_flatten_body, expression); }
 void def_fork(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_fork_body, expression); }
 void def_fourth(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_fourth_body, expression); }
@@ -342,7 +357,6 @@ void def_gcd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) {
 void def_genrec(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_genrec_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_hypot(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_hypot_body, expression); }
 void def_ifte(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_ifte_body, expression); }
 void def_ii(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_ii_body, expression); }
 void def_infra(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_infra_body, expression); }
@@ -427,4 +441,8 @@ void def__isnt_two_bools(__attribute__((unused)) JoyListPtr stack, JoyListPtr ex
 void def___REVERSE_SOLIDUS_SOLIDUS__(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def___REVERSE_SOLIDUS_SOLIDUS___body, expression); }
 void def_SOLIDUS_REVERSE_SOLIDUS(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_SOLIDUS_REVERSE_SOLIDUS_body, expression); }
 void def_REVERSE_SOLIDUS_SOLIDUS(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_REVERSE_SOLIDUS_SOLIDUS_body, expression); }
-void def_xor(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_xor_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_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); }
index 00448ce..a0895b3 100644 (file)
@@ -34,6 +34,8 @@ void def_codi(JoyListPtr stack, JoyListPtr expression);
 void def_codireco(JoyListPtr stack, JoyListPtr expression);
 void def_dinfrirst(JoyListPtr stack, JoyListPtr expression);
 void def_dipd(JoyListPtr stack, JoyListPtr expression);
+void def_dipdd(JoyListPtr stack, JoyListPtr expression);
+void def_dipddd(JoyListPtr stack, JoyListPtr expression);
 void def_disenstacken(JoyListPtr stack, JoyListPtr expression);
 void def_divmod(JoyListPtr stack, JoyListPtr expression);
 void def_down_to_zero(JoyListPtr stack, JoyListPtr expression);
@@ -43,6 +45,7 @@ void def_dupd(JoyListPtr stack, JoyListPtr expression);
 void def_dupdipd(JoyListPtr stack, JoyListPtr expression);
 void def_dupdip(JoyListPtr stack, JoyListPtr expression);
 void def_enstacken(JoyListPtr stack, JoyListPtr expression);
+void def_first_two(JoyListPtr stack, JoyListPtr expression);
 void def_flatten(JoyListPtr stack, JoyListPtr expression);
 void def_fork(JoyListPtr stack, JoyListPtr expression);
 void def_fourth(JoyListPtr stack, JoyListPtr expression);
@@ -50,7 +53,6 @@ void def_gcd(JoyListPtr stack, JoyListPtr expression);
 void def_genrec(JoyListPtr stack, JoyListPtr expression);
 void def_grabN(JoyListPtr stack, JoyListPtr expression);
 void def_grba(JoyListPtr stack, JoyListPtr expression);
-void def_hypot(JoyListPtr stack, JoyListPtr expression);
 void def_ifte(JoyListPtr stack, JoyListPtr expression);
 void def_ii(JoyListPtr stack, JoyListPtr expression);
 void def_infra(JoyListPtr stack, JoyListPtr expression);
@@ -135,4 +137,8 @@ void def__isnt_two_bools(JoyListPtr stack, JoyListPtr expression);
 void def___REVERSE_SOLIDUS_SOLIDUS__(JoyListPtr stack, JoyListPtr expression);
 void def_SOLIDUS_REVERSE_SOLIDUS(JoyListPtr stack, JoyListPtr expression);
 void def_REVERSE_SOLIDUS_SOLIDUS(JoyListPtr stack, JoyListPtr expression);
-void def_xor(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_two(JoyListPtr stack, JoyListPtr expression);
+void def_quote_HYPHEN_MINUS_two(JoyListPtr stack, JoyListPtr expression);
index 51295ce..f6671fc 100644 (file)
@@ -31,6 +31,8 @@ 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
@@ -41,6 +43,7 @@ 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
@@ -48,7 +51,6 @@ gcd true [tuck mod dup 0 >] loop pop
 genrec [[genrec] ccccons] nullary swons concat ifte
 grabN <{} [cons] times
 grba [stack popd] dip
-hypot [sqr] ii + sqrt
 ifte [nullary] dipd swap branch
 ii [dip] dupdip i
 infra swons swaack [i] dip swaack
@@ -61,7 +63,7 @@ neg 0 swap -
 not [true] [false] branch
 nulco [nullary] cons
 nullary [stack] dinfrirst
-null [] swap concat bool not
+null _isnt_list bool not
 of swap at
 or nulco [nullary] dip [true] branch
 over [dup] dip swap
@@ -132,9 +134,13 @@ _mape popd reverse
 _map0 [_map1] dipd _map2
 _map1 stackd shift
 _map2 [infrst] cons dipd roll< swons
-_isnt_bool not not
+_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
-xor [] [not] 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
index 2377679..5cf973e 100644 (file)
@@ -36,7 +36,7 @@
 #line 13 "KEYWORDS.txt"
 struct dict_entry;
 #include <string.h>
-/* maximum key range = 359, duplicates = 0 */
+/* maximum key range = 323, 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[] =
     {
-      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360, 360,  35, 360, 360, 360,  60, 360, 360,
-      360, 360,  30,  85, 360,  45, 360,  20,  60,  35,
-        0,  25, 360, 360, 360, 360, 360, 360, 360, 360,
-       10,  90,   0,  80, 360, 360, 360, 360, 360, 360,
-      360, 360, 360, 360, 360, 360, 360, 360,  20, 360,
-      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360,  30, 360, 360,  90, 360, 100,  70,   0,
-        5,  30,  40, 115,  15,  15, 360,  50,  40,  60,
-        0,  15,   0,  85,  70,  30,  25,   0,  95,  30,
-       25,  10,  20,  40, 360,   0, 360, 360, 360, 360,
-      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360, 360, 360, 360, 360
+      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
     };
   register unsigned int hval = len;
 
@@ -99,424 +99,433 @@ in_word_set (register const char *str, register size_t len)
 {
   enum
     {
-      TOTAL_KEYWORDS = 170,
+      TOTAL_KEYWORDS = 176,
       MIN_WORD_LENGTH = 1,
       MAX_WORD_LENGTH = 15,
       MIN_HASH_VALUE = 1,
-      MAX_HASH_VALUE = 359
+      MAX_HASH_VALUE = 323
     };
 
   static const struct dict_entry wordlist[] =
     {
       {""},
-#line 16 "KEYWORDS.txt"
-      {">", def_gt},
-#line 134 "KEYWORDS.txt"
-      {">>", def_GREATER_THAN_SIGN_GREATER_THAN_SIGN},
-      {""}, {""}, {""}, {""}, {""},
-#line 41 "KEYWORDS.txt"
-      {"dup", dup},
-      {""}, {""},
-#line 90 "KEYWORDS.txt"
-      {"dupdip", def_dupdip},
-#line 19 "KEYWORDS.txt"
-      {"<>", def_neq},
-      {""},
-#line 88 "KEYWORDS.txt"
-      {"dupd", def_dupd},
-#line 87 "KEYWORDS.txt"
-      {"dupdd", def_dupdd},
-      {""},
-#line 89 "KEYWORDS.txt"
-      {"dupdipd", def_dupdipd},
+#line 43 "KEYWORDS.txt"
+      {"i", i_joyfunc},
+#line 103 "KEYWORDS.txt"
+      {"ii", def_ii},
 #line 46 "KEYWORDS.txt"
       {"pop", pop},
       {""},
-#line 121 "KEYWORDS.txt"
+#line 123 "KEYWORDS.txt"
       {"popop", def_popop},
-#line 17 "KEYWORDS.txt"
-      {"<", def_lt},
-#line 120 "KEYWORDS.txt"
+      {""},
+#line 122 "KEYWORDS.txt"
       {"popopop", def_popopop},
 #line 40 "KEYWORDS.txt"
       {"dip", dip},
-#line 117 "KEYWORDS.txt"
+#line 119 "KEYWORDS.txt"
       {"popd", def_popd},
-#line 116 "KEYWORDS.txt"
+#line 118 "KEYWORDS.txt"
       {"popdd", def_popdd},
-#line 119 "KEYWORDS.txt"
+#line 121 "KEYWORDS.txt"
       {"popopd", def_popopd},
-#line 118 "KEYWORDS.txt"
+#line 120 "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"
+      {"zip", def_zip},
+#line 38 "KEYWORDS.txt"
+      {"cons", cons},
       {""},
-#line 43 "KEYWORDS.txt"
-      {"i", i_joyfunc},
-#line 104 "KEYWORDS.txt"
-      {"<<", def_LESS_THAN_SIGN_LESS_THAN_SIGN},
-      {""}, {""}, {""},
-#line 158 "KEYWORDS.txt"
-      {"uncons", def_uncons},
-#line 75 "KEYWORDS.txt"
-      {"ccccons", def_ccccons},
-      {""},
+#line 30 "KEYWORDS.txt"
+      {"/", fdiv_q},
+#line 164 "KEYWORDS.txt"
+      {"unswons", def_unswons},
+#line 41 "KEYWORDS.txt"
+      {"dup", dup},
 #line 79 "KEYWORDS.txt"
       {"codi", def_codi},
       {""},
-#line 30 "KEYWORDS.txt"
-      {"/", fdiv_q},
-#line 51 "KEYWORDS.txt"
-      {"fn", fn},
+#line 92 "KEYWORDS.txt"
+      {"dupdip", def_dupdip},
+      {""},
 #line 80 "KEYWORDS.txt"
       {"codireco", def_codireco},
-#line 159 "KEYWORDS.txt"
-      {"unit", def_unit},
-      {""},
-#line 39 "KEYWORDS.txt"
-      {"concat", concat},
-#line 101 "KEYWORDS.txt"
-      {"ii", def_ii},
-      {""},
-#line 38 "KEYWORDS.txt"
-      {"cons", cons},
+#line 90 "KEYWORDS.txt"
+      {"dupd", def_dupd},
+#line 89 "KEYWORDS.txt"
+      {"dupdd", def_dupdd},
+#line 16 "KEYWORDS.txt"
+      {">", def_gt},
+#line 91 "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 164 "KEYWORDS.txt"
-      {"x", def_x},
+#line 160 "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"
+      {"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 62 "KEYWORDS.txt"
-      {"<{}", def_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET},
 #line 81 "KEYWORDS.txt"
       {"dinfrirst", def_dinfrirst},
-#line 99 "KEYWORDS.txt"
-      {"hypot", def_hypot},
+      {""}, {""},
+#line 136 "KEYWORDS.txt"
+      {">>", def_GREATER_THAN_SIGN_GREATER_THAN_SIGN},
       {""},
-#line 109 "KEYWORDS.txt"
-      {"nullary", def_nullary},
+#line 161 "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 108 "KEYWORDS.txt"
+#line 110 "KEYWORDS.txt"
       {"nulco", def_nulco},
-#line 24 "KEYWORDS.txt"
-      {"*", mul},
-#line 83 "KEYWORDS.txt"
-      {"disenstacken", def_disenstacken},
-#line 37 "KEYWORDS.txt"
-      {"cmp", cmp_joyfunc},
-#line 63 "KEYWORDS.txt"
-      {"<<{}", def_LESS_THAN_SIGN_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET},
-#line 155 "KEYWORDS.txt"
-      {"third", def_third},
       {""},
-#line 162 "KEYWORDS.txt"
-      {"unswons", def_unswons},
-#line 107 "KEYWORDS.txt"
-      {"not", def_not},
-#line 91 "KEYWORDS.txt"
-      {"enstacken", def_enstacken},
+#line 51 "KEYWORDS.txt"
+      {"fn", fn},
       {""},
-#line 136 "KEYWORDS.txt"
-      {"second", def_second},
-#line 183 "KEYWORDS.txt"
-      {"\\/", def_REVERSE_SOLIDUS_SOLIDUS},
-#line 135 "KEYWORDS.txt"
-      {"run", def_run},
-#line 45 "KEYWORDS.txt"
-      {"loop", loop},
-#line 138 "KEYWORDS.txt"
-      {"shunt", def_shunt},
-#line 94 "KEYWORDS.txt"
-      {"fourth", def_fourth},
-#line 85 "KEYWORDS.txt"
-      {"down_to_zero", def_down_to_zero},
-#line 122 "KEYWORDS.txt"
-      {"pow", def_pow},
-#line 156 "KEYWORDS.txt"
-      {"tuck", def_tuck},
+#line 69 "KEYWORDS.txt"
+      {"app3", def_app3},
       {""},
-#line 141 "KEYWORDS.txt"
-      {"spiral_next", def_spiral_next},
-#line 182 "KEYWORDS.txt"
-      {"/\\", def_SOLIDUS_REVERSE_SOLIDUS},
+#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 110 "KEYWORDS.txt"
-      {"null", def_null},
+#line 93 "KEYWORDS.txt"
+      {"enstacken", def_enstacken},
       {""},
-#line 103 "KEYWORDS.txt"
-      {"infrst", def_infrst},
-#line 161 "KEYWORDS.txt"
-      {"unstack", def_unstack},
-#line 23 "KEYWORDS.txt"
-      {"mod", fdiv_r},
-#line 165 "KEYWORDS.txt"
-      {"step", def_step},
-#line 137 "KEYWORDS.txt"
-      {"shift", def_shift},
 #line 28 "KEYWORDS.txt"
       {"-", sub},
-#line 54 "KEYWORDS.txt"
-      {"lt", def_lt},
-#line 147 "KEYWORDS.txt"
-      {"stuncons", def_stuncons},
-#line 86 "KEYWORDS.txt"
+#line 154 "KEYWORDS.txt"
+      {"tailrec", def_tailrec},
+#line 144 "KEYWORDS.txt"
+      {"split_at", def_split_at},
+#line 88 "KEYWORDS.txt"
       {"drop", def_drop},
+#line 145 "KEYWORDS.txt"
+      {"split_list", def_split_list},
+      {""},
 #line 163 "KEYWORDS.txt"
-      {"while", def_while},
+      {"unstack", def_unstack},
       {""},
-#line 111 "KEYWORDS.txt"
-      {"of", def_of},
-#line 160 "KEYWORDS.txt"
-      {"unquoted", def_unquoted},
-#line 139 "KEYWORDS.txt"
+#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"
+      {"shift", def_shift},
+#line 105 "KEYWORDS.txt"
+      {"infrst", def_infrst},
       {""},
-#line 74 "KEYWORDS.txt"
-      {"binary", def_binary},
-#line 56 "KEYWORDS.txt"
-      {"le", def_le},
-#line 142 "KEYWORDS.txt"
-      {"split_at", def_split_at},
-#line 68 "KEYWORDS.txt"
-      {"app2", def_app2},
-#line 143 "KEYWORDS.txt"
-      {"split_list", def_split_list},
-#line 77 "KEYWORDS.txt"
-      {"cleave", def_cleave},
-#line 150 "KEYWORDS.txt"
-      {"swoncat", def_swoncat},
-      {""},
-#line 146 "KEYWORDS.txt"
+#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 151 "KEYWORDS.txt"
-      {"swons", def_swons},
-#line 124 "KEYWORDS.txt"
-      {"quoted", def_quoted},
       {""},
-#line 66 "KEYWORDS.txt"
-      {"and", def_and},
-#line 100 "KEYWORDS.txt"
-      {"ifte", def_ifte},
-#line 157 "KEYWORDS.txt"
-      {"unary", def_unary},
-#line 32 "KEYWORDS.txt"
-      {"lshift", lshift},
-#line 123 "KEYWORDS.txt"
+#line 26 "KEYWORDS.txt"
+      {"+", add},
+#line 125 "KEYWORDS.txt"
       {"product", def_product},
-#line 27 "KEYWORDS.txt"
-      {"add", add},
-#line 127 "KEYWORDS.txt"
-      {"reco", def_reco},
-      {""},
-#line 22 "KEYWORDS.txt"
-      {"%", fdiv_r},
-#line 115 "KEYWORDS.txt"
-      {"pm", def_pm},
+#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 70 "KEYWORDS.txt"
-      {"appN", def_appN},
+#line 182 "KEYWORDS.txt"
+      {"_isnt_two_bools", def__isnt_two_bools},
       {""},
-#line 84 "KEYWORDS.txt"
-      {"divmod", def_divmod},
-#line 59 "KEYWORDS.txt"
-      {"!-", def_EXCLAMATION_MARK_HYPHEN_MINUS},
 #line 95 "KEYWORDS.txt"
-      {"gcd", def_gcd},
-#line 69 "KEYWORDS.txt"
-      {"app3", def_app3},
-#line 131 "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 132 "KEYWORDS.txt"
-      {"rollup", def_rollup},
+#line 15 "KEYWORDS.txt"
+      {"=", def_eq},
       {""},
-#line 129 "KEYWORDS.txt"
-      {"rolldown", def_rolldown},
+#line 175 "KEYWORDS.txt"
+      {"map", def_map},
       {""},
-#line 169 "KEYWORDS.txt"
-      {"times", def_times},
+#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 61 "KEYWORDS.txt"
-      {"--", def_HYPHEN_MINUS_HYPHEN_MINUS},
+#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 67 "KEYWORDS.txt"
-      {"app1", def_app1},
-#line 130 "KEYWORDS.txt"
-      {"roll<", def_roll_LESS_THAN_SIGN},
+#line 186 "KEYWORDS.txt"
+      {"_isnt_list", def__isnt_list},
 #line 73 "KEYWORDS.txt"
       {"b", def_b},
-#line 154 "KEYWORDS.txt"
-      {"ternary", def_ternary},
-#line 25 "KEYWORDS.txt"
-      {"mul", mul},
-#line 34 "KEYWORDS.txt"
-      {"bool", truthy},
-#line 36 "KEYWORDS.txt"
-      {"clear", clear},
-#line 33 "KEYWORDS.txt"
-      {"rshift", rshift},
-#line 152 "KEYWORDS.txt"
-      {"tailrec", def_tailrec},
-      {""}, {""}, {""},
-#line 96 "KEYWORDS.txt"
-      {"genrec", def_genrec},
-#line 71 "KEYWORDS.txt"
-      {"at", def_at},
-#line 148 "KEYWORDS.txt"
-      {"sum", def_sum},
+#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 112 "KEYWORDS.txt"
-      {"or", def_or},
-      {""},
+#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 102 "KEYWORDS.txt"
-      {"infra", def_infra},
-#line 58 "KEYWORDS.txt"
-      {"?", def_QUESTION_MARK},
-#line 172 "KEYWORDS.txt"
-      {"_timest", def__timest},
-#line 173 "KEYWORDS.txt"
-      {"map", def_map},
-#line 50 "KEYWORDS.txt"
-      {"swap", swap},
-      {""},
-#line 145 "KEYWORDS.txt"
-      {"stackd", def_stackd},
+#line 142 "KEYWORDS.txt"
+      {"small", def_small},
+#line 74 "KEYWORDS.txt"
+      {"binary", def_binary},
 #line 53 "KEYWORDS.txt"
       {"gt", def_gt},
       {""}, {""},
-#line 149 "KEYWORDS.txt"
-      {"swapd", def_swapd},
-#line 26 "KEYWORDS.txt"
-      {"+", add},
-#line 171 "KEYWORDS.txt"
-      {"_times1", def__times1},
-#line 29 "KEYWORDS.txt"
-      {"sub", sub},
-      {""}, {""},
-#line 168 "KEYWORDS.txt"
+#line 153 "KEYWORDS.txt"
+      {"swons", def_swons},
+#line 170 "KEYWORDS.txt"
       {"_stept", def__stept},
-#line 57 "KEYWORDS.txt"
-      {"ge", def_ge},
+#line 174 "KEYWORDS.txt"
+      {"_timest", def__timest},
+#line 31 "KEYWORDS.txt"
+      {"div", fdiv_q},
+#line 155 "KEYWORDS.txt"
+      {"take", def_take},
       {""},
-#line 93 "KEYWORDS.txt"
+#line 168 "KEYWORDS.txt"
+      {"_step0", def__step0},
+#line 172 "KEYWORDS.txt"
+      {"_times0", def__times0},
+      {""}, {""}, {""},
+#line 77 "KEYWORDS.txt"
+      {"cleave", def_cleave},
+#line 87 "KEYWORDS.txt"
+      {"down_to_zero", def_down_to_zero},
+      {""},
+#line 96 "KEYWORDS.txt"
       {"fork", def_fork},
-#line 180 "KEYWORDS.txt"
-      {"_isnt_two_bools", def__isnt_two_bools},
-#line 15 "KEYWORDS.txt"
-      {"=", def_eq},
-#line 21 "KEYWORDS.txt"
-      {">=", def_ge},
-#line 184 "KEYWORDS.txt"
-      {"xor", def_xor},
+#line 36 "KEYWORDS.txt"
+      {"clear", clear},
+#line 99 "KEYWORDS.txt"
+      {"genrec", def_genrec},
+#line 59 "KEYWORDS.txt"
+      {"!-", def_EXCLAMATION_MARK_HYPHEN_MINUS},
       {""},
-#line 179 "KEYWORDS.txt"
-      {"_isnt_bool", def__isnt_bool},
-#line 167 "KEYWORDS.txt"
-      {"_step1", def__step1},
-#line 92 "KEYWORDS.txt"
-      {"flatten", def_flatten},
+#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},
+      {""},
+#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 22 "KEYWORDS.txt"
+      {"%", fdiv_r},
       {""}, {""}, {""}, {""},
+#line 35 "KEYWORDS.txt"
+      {"branch", branch},
 #line 20 "KEYWORDS.txt"
       {"<=", def_le},
-      {""}, {""}, {""}, {""},
-#line 170 "KEYWORDS.txt"
-      {"_times0", def__times0},
-#line 126 "KEYWORDS.txt"
-      {"range_to_zero", def_range_to_zero},
+#line 150 "KEYWORDS.txt"
+      {"sum", def_sum},
+      {""}, {""}, {""},
+#line 57 "KEYWORDS.txt"
+      {"ge", def_ge},
+#line 116 "KEYWORDS.txt"
+      {"pam", def_pam},
       {""},
-#line 133 "KEYWORDS.txt"
+#line 135 "KEYWORDS.txt"
       {"rrest", def_rrest},
       {""},
-#line 52 "KEYWORDS.txt"
-      {"eq", def_eq},
-#line 55 "KEYWORDS.txt"
-      {"neq", def_neq},
-      {""},
-#line 125 "KEYWORDS.txt"
-      {"range", def_range},
-      {""}, {""}, {""},
-#line 153 "KEYWORDS.txt"
-      {"take", def_take},
-#line 48 "KEYWORDS.txt"
-      {"stack", stack},
-#line 166 "KEYWORDS.txt"
-      {"_step0", def__step0},
+#line 72 "KEYWORDS.txt"
+      {"average", def_average},
       {""},
-#line 31 "KEYWORDS.txt"
-      {"div", fdiv_q},
-#line 113 "KEYWORDS.txt"
-      {"over", def_over},
+#line 183 "KEYWORDS.txt"
+      {"_\\/_", def___REVERSE_SOLIDUS_SOLIDUS__},
+#line 100 "KEYWORDS.txt"
+      {"grabN", def_grabN},
       {""},
-#line 49 "KEYWORDS.txt"
-      {"swaack", swaack},
 #line 18 "KEYWORDS.txt"
       {"!=", def_neq},
+      {""}, {""},
+#line 179 "KEYWORDS.txt"
+      {"_map1", def__map1},
       {""}, {""}, {""}, {""}, {""},
-#line 114 "KEYWORDS.txt"
-      {"pam", def_pam},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 128 "KEYWORDS.txt"
-      {"reverse", def_reverse},
-#line 64 "KEYWORDS.txt"
-      {"abs", def_abs},
-#line 181 "KEYWORDS.txt"
-      {"_\\/_", def___REVERSE_SOLIDUS_SOLIDUS__},
-#line 140 "KEYWORDS.txt"
-      {"small", def_small},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""},
-#line 178 "KEYWORDS.txt"
-      {"_map2", def__map2},
+#line 49 "KEYWORDS.txt"
+      {"swaack", swaack},
       {""},
-#line 60 "KEYWORDS.txt"
-      {"++", def_PLUS_SIGN_PLUS_SIGN},
-#line 144 "KEYWORDS.txt"
+#line 146 "KEYWORDS.txt"
       {"sqr", def_sqr},
-      {""}, {""},
-#line 35 "KEYWORDS.txt"
-      {"branch", branch},
-#line 72 "KEYWORDS.txt"
-      {"average", def_average},
-#line 106 "KEYWORDS.txt"
-      {"neg", def_neg},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 65 "KEYWORDS.txt"
-      {"anamorphism", def_anamorphism},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""},
-#line 175 "KEYWORDS.txt"
-      {"_mape", def__mape},
-      {""}, {""}, {""}, {""},
-#line 177 "KEYWORDS.txt"
-      {"_map1", def__map1},
       {""}, {""}, {""},
-#line 105 "KEYWORDS.txt"
-      {"make_generator", def_make_generator},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 156 "KEYWORDS.txt"
+      {"ternary", def_ternary},
       {""}, {""}, {""}, {""}, {""}, {""},
-#line 97 "KEYWORDS.txt"
-      {"grabN", def_grabN},
+#line 107 "KEYWORDS.txt"
+      {"make_generator", def_make_generator},
       {""}, {""}, {""}, {""},
-#line 176 "KEYWORDS.txt"
+#line 101 "KEYWORDS.txt"
+      {"grba", def_grba},
+#line 178 "KEYWORDS.txt"
       {"_map0", def__map0},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""},
+#line 108 "KEYWORDS.txt"
+      {"neg", def_neg},
       {""},
-#line 174 "KEYWORDS.txt"
+#line 176 "KEYWORDS.txt"
       {"_map?", def__map_QUESTION_MARK},
+      {""}, {""}, {""}, {""}, {""}, {""},
+#line 130 "KEYWORDS.txt"
+      {"reverse", def_reverse},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 165 "KEYWORDS.txt"
+      {"while", def_while},
+      {""},
+#line 52 "KEYWORDS.txt"
+      {"eq", def_eq},
+#line 55 "KEYWORDS.txt"
+      {"neq", def_neq},
+      {""},
+#line 177 "KEYWORDS.txt"
+      {"_mape", def__mape},
+      {""},
+#line 106 "KEYWORDS.txt"
+      {"<<", def_LESS_THAN_SIGN_LESS_THAN_SIGN},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 180 "KEYWORDS.txt"
+      {"_map2", def__map2},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""},
-#line 98 "KEYWORDS.txt"
-      {"grba", def_grba}
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 124 "KEYWORDS.txt"
+      {"pow", def_pow}
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
index c36137b..45dd96b 100644 (file)
@@ -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,3 +146,7 @@ _\/_ [_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