From 95fe078b9fce4ceeacc7a16bdbe2ee492f0bbf6f Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Sat, 7 Sep 2019 15:41:45 -0700 Subject: [PATCH 1/6] u3: cleans up xtract.c (mostly style, minor refactoring) --- pkg/urbit/noun/xtract.c | 51 ++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 29 deletions(-) diff --git a/pkg/urbit/noun/xtract.c b/pkg/urbit/noun/xtract.c index 9b6eeac62..47a0eaf6a 100644 --- a/pkg/urbit/noun/xtract.c +++ b/pkg/urbit/noun/xtract.c @@ -8,10 +8,7 @@ u3_noun u3x_good(u3_weak som) { - if ( u3_none == som ) { - return u3m_bail(c3__exit); - } - else return som; + return ( u3_none == som ) ? u3m_bail(c3__exit) : som; } /* u3x_at (u3at): fragment. @@ -19,11 +16,7 @@ u3x_good(u3_weak som) u3_noun u3x_at(u3_noun axe, u3_noun som) { - u3_weak pro = u3r_at(axe, som); - - if ( u3_none == pro ) { - return u3m_bail(c3__exit); - } else return pro; + return u3x_good(u3r_at(axe, som)); } /* u3x_cell(): @@ -32,8 +25,8 @@ u3x_at(u3_noun axe, u3_noun som) */ void u3x_cell(u3_noun a, - u3_noun* b, - u3_noun* c) + u3_noun* b, + u3_noun* c) { if ( c3n == u3r_cell(a, b, c) ) { u3m_bail(c3__exit); @@ -46,9 +39,9 @@ u3x_cell(u3_noun a, */ void u3x_trel(u3_noun a, - u3_noun* b, - u3_noun* c, - u3_noun* d) + u3_noun* b, + u3_noun* c, + u3_noun* d) { if ( c3n == u3r_trel(a, b, c, d) ) { u3m_bail(c3__exit); @@ -61,10 +54,10 @@ u3x_trel(u3_noun a, */ void u3x_qual(u3_noun a, - u3_noun* b, - u3_noun* c, - u3_noun* d, - u3_noun* e) + u3_noun* b, + u3_noun* c, + u3_noun* d, + u3_noun* e) { if ( c3n == u3r_qual(a, b, c, d, e) ) { u3m_bail(c3__exit); @@ -77,11 +70,11 @@ u3x_qual(u3_noun a, */ void u3x_quil(u3_noun a, - u3_noun* b, - u3_noun* c, - u3_noun* d, - u3_noun* e, - u3_noun* f) + u3_noun* b, + u3_noun* c, + u3_noun* d, + u3_noun* e, + u3_noun* f) { if ( c3n == u3r_quil(a, b, c, d, e, f) ) { u3m_bail(c3__exit); @@ -94,12 +87,12 @@ u3x_quil(u3_noun a, */ void u3x_hext(u3_noun a, - u3_noun* b, - u3_noun* c, - u3_noun* d, - u3_noun* e, - u3_noun* f, - u3_noun* g) + u3_noun* b, + u3_noun* c, + u3_noun* d, + u3_noun* e, + u3_noun* f, + u3_noun* g) { if ( c3n == u3r_hext(a, b, c, d, e, f, g) ) { u3m_bail(c3__exit); From 22f10d755f351413d87387731ee042389ac736d3 Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Sat, 7 Sep 2019 15:42:25 -0700 Subject: [PATCH 2/6] u3: adds u3r_vmean (explicit varargs list), u3x_mean --- pkg/urbit/include/noun/retrieve.h | 2 ++ pkg/urbit/include/noun/xtract.h | 8 +++++ pkg/urbit/noun/retrieve.c | 50 +++++++++++++++++++------------ pkg/urbit/noun/xtract.c | 20 +++++++++++++ 4 files changed, 61 insertions(+), 19 deletions(-) diff --git a/pkg/urbit/include/noun/retrieve.h b/pkg/urbit/include/noun/retrieve.h index 2d912b0c0..84adbe28a 100644 --- a/pkg/urbit/include/noun/retrieve.h +++ b/pkg/urbit/include/noun/retrieve.h @@ -29,6 +29,8 @@ ** Attempt to deconstruct `a` by axis, noun pairs; 0 terminates. ** Axes must be sorted in tree order. */ + c3_o + u3r_vmean(u3_noun a, va_list ap); c3_o u3r_mean(u3_noun a, ...); diff --git a/pkg/urbit/include/noun/xtract.h b/pkg/urbit/include/noun/xtract.h index d7a355ffb..594638f3f 100644 --- a/pkg/urbit/include/noun/xtract.h +++ b/pkg/urbit/include/noun/xtract.h @@ -81,6 +81,14 @@ u3_noun u3x_at(u3_noun axe, u3_noun som); + /* u3x_mean(): + ** + ** Attempt to deconstruct `a` by axis, noun pairs; 0 terminates. + ** Axes must be sorted in tree order. + */ + void + u3x_mean(u3_noun a, ...); + /* u3x_cell(): ** ** Divide `a` as a cell `[b c]`. diff --git a/pkg/urbit/noun/retrieve.c b/pkg/urbit/noun/retrieve.c index 0c7e8dbcb..9580c505b 100644 --- a/pkg/urbit/noun/retrieve.c +++ b/pkg/urbit/noun/retrieve.c @@ -163,51 +163,63 @@ u3r_at(u3_atom a, u3_noun b) __attribute__((no_sanitize_address)) c3_o -u3r_mean(u3_noun som, - ...) +u3r_vmean(u3_noun som, va_list ap) { - va_list ap; + va_list aq; c3_w len_w; struct _mean_pair* prs_m; c3_assert(u3_none != som); - /* Count. - */ + // traverse copy of va_list for alloca + // + va_copy(aq, ap); len_w = 0; - { - va_start(ap, som); - while ( 1 ) { - if ( 0 == va_arg(ap, c3_w) ) { - break; - } - va_arg(ap, u3_noun*); - len_w++; + + while ( 1 ) { + if ( 0 == va_arg(aq, c3_w) ) { + break; } - va_end(ap); + va_arg(aq, u3_noun*); + len_w++; } + va_end(aq); + c3_assert( 0 != len_w ); prs_m = alloca(len_w * sizeof(struct _mean_pair)); - /* Install. - */ + // traverse va_list and extract args + // { c3_w i_w; - va_start(ap, som); for ( i_w = 0; i_w < len_w; i_w++ ) { prs_m[i_w].axe_w = va_arg(ap, c3_w); prs_m[i_w].som = va_arg(ap, u3_noun*); } + va_end(ap); } - /* Extract. - */ + // extract axis from som + // return _mean_extract(som, len_w, prs_m); } +c3_o +u3r_mean(u3_noun som, ...) +{ + c3_o ret_o; + va_list ap; + + va_start(ap, som); + ret_o = u3r_vmean(som, ap); + va_end(ap); + + return ret_o; +} + /* _sang_one(): unify but leak old. */ static void diff --git a/pkg/urbit/noun/xtract.c b/pkg/urbit/noun/xtract.c index 47a0eaf6a..0d5deaf78 100644 --- a/pkg/urbit/noun/xtract.c +++ b/pkg/urbit/noun/xtract.c @@ -19,6 +19,26 @@ u3x_at(u3_noun axe, u3_noun som) return u3x_good(u3r_at(axe, som)); } +/* u3x_mean(): +** +** Attempt to deconstruct `a` by axis, noun pairs; 0 terminates. +** Axes must be sorted in tree order. +*/ +void +u3x_mean(u3_noun som, ...) +{ + c3_o ret_o; + va_list ap; + + va_start(ap, som); + ret_o = u3r_vmean(som, ap); + va_end(ap); + + if ( c3n == ret_o ) { + u3m_bail(c3__exit); + } +} + /* u3x_cell(): ** ** Divide `a` as a cell `[b c]`. From 722b961d3a238662defede7dec215d3d77d60172 Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Tue, 10 Sep 2019 17:26:47 -0700 Subject: [PATCH 3/6] u3: refactors set treap jets (+in) --- pkg/urbit/jets/d/in_bif.c | 108 +++++++++++++------------- pkg/urbit/jets/d/in_del.c | 159 +++++++++++++++++--------------------- pkg/urbit/jets/d/in_dif.c | 121 ++++++++++++++--------------- pkg/urbit/jets/d/in_gas.c | 75 +++++++----------- pkg/urbit/jets/d/in_has.c | 76 ++++++++---------- pkg/urbit/jets/d/in_put.c | 142 +++++++++++++++------------------- pkg/urbit/jets/d/in_tap.c | 76 ++++++++---------- pkg/urbit/jets/d/in_uni.c | 135 +++++++++++++++----------------- pkg/urbit/jets/d/in_wyt.c | 38 +++++---- 9 files changed, 418 insertions(+), 512 deletions(-) diff --git a/pkg/urbit/jets/d/in_bif.c b/pkg/urbit/jets/d/in_bif.c index 5204a85a9..643cd7a29 100644 --- a/pkg/urbit/jets/d/in_bif.c +++ b/pkg/urbit/jets/d/in_bif.c @@ -5,72 +5,68 @@ /* internal functions */ - static - u3_noun _i_bif_putroot(u3_noun a, - u3_noun b) - { - if ( u3_nul == a) { - return u3nt(u3k(b), u3_nul, u3_nul); +static u3_noun +_i_bif_putroot(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a) { + return u3nt(u3k(b), u3_nul, u3_nul); + } + else { + u3_noun n_a, lr_a; + u3x_cell(a, &n_a, &lr_a); + + if ( c3y == u3r_sing(b, n_a) ) { + return u3k(a); } else { - u3_noun n_a, l_a, r_a; + u3_noun c, n_c, l_c, r_c; + u3_noun d; + u3_noun l_a, r_a; + u3x_cell(lr_a, &l_a, &r_a); - if ( (c3n == u3r_trel(a, &n_a, &l_a, &r_a)) ) { - return u3m_bail(c3__exit); - } - else if ( c3y == u3r_sing(b, n_a) ) { - return u3k(a); + if ( c3y == u3qc_gor(b, n_a) ) { + c = _i_bif_putroot(l_a, b); + u3r_trel(c, &n_c, &l_c, &r_c); + d = u3nt(u3k(n_c), + u3k(l_c), + u3nt(u3k(n_a), u3k(r_c), u3k(r_a))); + u3z(c); + return d; } else { - u3_noun c, n_c, l_c, r_c; - u3_noun d; - - if ( c3y == u3qc_gor(b, n_a) ) { - c = _i_bif_putroot(l_a, b); - u3r_trel(c, &n_c, &l_c, &r_c); - d = u3nt(u3k(n_c), - u3k(l_c), - u3nt(u3k(n_a), u3k(r_c), u3k(r_a))); - u3z(c); - return d; - } else { - c = _i_bif_putroot(r_a, b); - u3r_trel(c, &n_c, &l_c, &r_c); - d = u3nt(u3k(n_c), - u3nt(u3k(n_a), u3k(l_a), u3k(l_c)), - u3k(r_c)); - u3z(c); - return d; - } + c = _i_bif_putroot(r_a, b); + u3r_trel(c, &n_c, &l_c, &r_c); + d = u3nt(u3k(n_c), + u3nt(u3k(n_a), u3k(l_a), u3k(l_c)), + u3k(r_c)); + u3z(c); + return d; } } } +} /* functions */ - u3_noun u3wdi_bif(u3_noun cor) - { - u3_noun a, b; - if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdi_bif(a, b); - } - } +u3_noun +u3wdi_bif(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_bif(a, b); +} - u3_noun u3qdi_bif(u3_noun a, - u3_noun b) - { - u3_noun c, n_c, l_c, r_c; - u3_noun d; +u3_noun +u3qdi_bif(u3_noun a, + u3_noun b) +{ + u3_noun c, n_c, l_c, r_c; + u3_noun d; - c = _i_bif_putroot(a, b); - u3r_trel(c, &n_c, &l_c, &r_c); - d = u3nc(u3k(l_c), u3k(r_c)); - u3z(c); - return d; - } - - /* - u3_weak u3kdi_bif(u3_noun a, u3_noun b); - */ + c = _i_bif_putroot(a, b); + u3r_trel(c, &n_c, &l_c, &r_c); + d = u3nc(u3k(l_c), u3k(r_c)); + u3z(c); + return d; +} diff --git a/pkg/urbit/jets/d/in_del.c b/pkg/urbit/jets/d/in_del.c index 62c2d9f5d..0d8539efd 100644 --- a/pkg/urbit/jets/d/in_del.c +++ b/pkg/urbit/jets/d/in_del.c @@ -5,101 +5,84 @@ /* functions */ - static u3_noun - _rebalance(u3_noun a) - { +static u3_noun +_rebalance(u3_noun a) +{ + u3_noun l_a, n_a, r_a; + u3x_trel(a, &n_a, &l_a, &r_a); + + if ( u3_nul == l_a) { + return u3k(r_a); + } + else if ( u3_nul == r_a) { + return u3k(l_a); + } + else { + u3_noun n_l_a, l_l_a, r_l_a; + u3_noun n_r_a, l_r_a, r_r_a; + u3x_trel(l_a, &n_l_a, &l_l_a, &r_l_a); + u3x_trel(r_a, &n_r_a, &l_r_a, &r_r_a); + + if ( c3y == u3qc_mor(n_l_a, n_r_a) ) { + u3_noun new_right = u3nt(u3k(n_a), + u3k(r_l_a), + u3k(r_a)); + + u3_noun ret = u3nt(u3k(n_l_a), + u3k(l_l_a), + _rebalance(new_right)); + u3z(new_right); + + return ret; + } + else { + u3_noun new_left = u3nt(u3k(n_a), + u3k(l_a), + u3k(l_r_a)); + + u3_noun ret = u3nt(u3k(n_r_a), + _rebalance(new_left), + u3k(r_r_a)); + u3z(new_left); + + return ret; + } + } +} + +u3_noun +u3qdi_del(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return u3_nul; + } + else { u3_noun l_a, n_a, r_a; + u3x_trel(a, &n_a, &l_a, &r_a); - if ( c3n == u3r_trel(a, &n_a, &l_a, &r_a) ) { - return u3m_bail(c3__exit); + if ( c3y == u3r_sing(n_a, b) ) { + return _rebalance(a); } else { - if ( u3_nul == l_a) { - return u3k(r_a); - } - else if ( u3_nul == r_a) { - return u3k(l_a); + if ( c3y == u3qc_gor(b, n_a) ) { + return u3nt(u3k(n_a), + u3qdi_del(l_a, b), + u3k(r_a)); } else { - u3_noun n_l_a, l_l_a, r_l_a; - u3_noun n_r_a, l_r_a, r_r_a; - - if ( (c3n == u3r_trel(l_a, &n_l_a, &l_l_a, &r_l_a) ) || - (c3n == u3r_trel(r_a, &n_r_a, &l_r_a, &r_r_a) ) ) { - return u3m_bail(c3__exit); - } - else { - if ( c3y == u3qc_mor(n_l_a, n_r_a) ) { - u3_noun new_right = u3nt(u3k(n_a), - u3k(r_l_a), - u3k(r_a)); - - u3_noun ret = u3nt(u3k(n_l_a), - u3k(l_l_a), - _rebalance(new_right)); - u3z(new_right); - - return ret; - } - else { - u3_noun new_left = u3nt(u3k(n_a), - u3k(l_a), - u3k(l_r_a)); - - u3_noun ret = u3nt(u3k(n_r_a), - _rebalance(new_left), - u3k(r_r_a)); - u3z(new_left); - - return ret; - } - } + return u3nt(u3k(n_a), + u3k(l_a), + u3qdi_del(r_a, b)); } } } +} - u3_noun - u3qdi_del(u3_noun a, - u3_noun b) - { - if ( u3_nul == a ) { - return u3_nul; - } - else { - u3_noun l_a, n_a, r_a; - - if ( (c3n == u3r_trel(a, &n_a, &l_a, &r_a)) ) { - return u3m_bail(c3__exit); - } - else if ( c3n == u3r_sing(n_a, b) ) { - if ( c3y == u3qc_gor(b, n_a) ) { - return u3nt(u3k(n_a), - u3qdi_del(l_a, b), - u3k(r_a)); - } - else { - return u3nt(u3k(n_a), - u3k(l_a), - u3qdi_del(r_a, b)); - } - } - else { - return _rebalance(a); - } - } - } - - u3_noun - u3wdi_del(u3_noun cor) - { - u3_noun a, b; - - if ( c3n == u3r_mean(cor, u3x_sam, &b, - u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } - else { - u3_noun n = u3qdi_del(a, b); - return n; - } - } +u3_noun +u3wdi_del(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_del(a, b); +} diff --git a/pkg/urbit/jets/d/in_dif.c b/pkg/urbit/jets/d/in_dif.c index f542717d0..c2e53043e 100644 --- a/pkg/urbit/jets/d/in_dif.c +++ b/pkg/urbit/jets/d/in_dif.c @@ -5,78 +5,71 @@ /* internal functions */ - static - u3_noun _i_dif_join(u3_noun d, - u3_noun e) - { - if ( u3_nul == d ) { - return u3k(e); - } else if (u3_nul == e) { - return u3k(d); - } else { - u3_noun n_d, l_d, r_d; - u3_noun n_e, l_e, r_e; +static u3_noun +_i_dif_join(u3_noun d, + u3_noun e) +{ + if ( u3_nul == d ) { + return u3k(e); + } + else if ( u3_nul == e ) { + return u3k(d); + } + else { + u3_noun n_d, lr_d; + u3_noun n_e, lr_e; + u3x_cell(d, &n_d, &lr_d); + u3x_cell(e, &n_e, &lr_e); - if ( c3n == u3r_trel(d, &n_d, &l_d, &r_d) - || c3n == u3r_trel(e, &n_e, &l_e, &r_e) ) { - return u3m_bail(c3__exit); - } else { - if ( c3y == u3qc_mor(n_d, n_e) ) { - return u3nt(u3k(n_d), - u3k(l_d), - _i_dif_join(u3k(r_d), u3k(e))); - } else { - return u3nt(u3k(n_e), - _i_dif_join(u3k(d), u3k(l_e)), - u3k(r_e)); - } - } + if ( c3y == u3qc_mor(n_d, n_e) ) { + u3_noun l_d, r_d; + u3x_cell(lr_d, &l_d, &r_d); + + return u3nt(u3k(n_d), + u3k(l_d), + _i_dif_join(u3k(r_d), u3k(e))); + } + else { + u3_noun l_e, r_e; + u3x_cell(lr_e, &l_e, &r_e); + + return u3nt(u3k(n_e), + _i_dif_join(u3k(d), u3k(l_e)), + u3k(r_e)); } } +} /* functions */ - u3_noun u3wdi_dif(u3_noun cor) - { - u3_noun a, b; - if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdi_dif(a, b); - } +u3_noun +u3wdi_dif(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_dif(a, b); +} + +u3_noun +u3qdi_dif(u3_noun a, + u3_noun b) +{ + if ( u3_nul == b ) { + return u3k(a); } + else { + u3_noun n_b, l_b, r_b; + u3_noun c, l_c, r_c; + u3_noun d, e; - u3_noun u3qdi_dif(u3_noun a, - u3_noun b) - { - if ( u3_nul == b ) { - return u3k(a); - } else { - u3_noun n_b, l_b, r_b; - u3_noun c, l_c, r_c; + u3x_trel(b, &n_b, &l_b, &r_b); + c = u3qdi_bif(a, n_b); + u3x_cell(c, &l_c, &r_c); - if ( c3n == u3r_trel(b, &n_b, &l_b, &r_b) ) { - return u3m_bail(c3__exit); - } else { + d = u3qdi_dif(l_c, l_b); + e = u3qdi_dif(r_c, r_b); + u3z(c); - c = u3qdi_bif(a, n_b); - - if ( c3n == u3r_cell(c, &l_c, &r_c) ) { - return u3m_bail(c3__exit); - } else { - u3_noun d; - u3_noun e; - - d = u3qdi_dif(l_c, l_b); - e = u3qdi_dif(r_c, r_b); - u3z(c); - - return _i_dif_join(d, e); - } - } - } + return _i_dif_join(d, e); } - - /* - u3_weak u3kdi_dif(u3_noun a, u3_noun b); - */ +} diff --git a/pkg/urbit/jets/d/in_gas.c b/pkg/urbit/jets/d/in_gas.c index f3f8d7372..b31982de8 100644 --- a/pkg/urbit/jets/d/in_gas.c +++ b/pkg/urbit/jets/d/in_gas.c @@ -3,56 +3,39 @@ */ #include "all.h" - /* functions */ - u3_noun - u3qdi_gas(u3_noun a, - u3_noun b) - { - if ( u3_nul == b ) { - return u3k(a); - } - else { - if ( c3n == u3du(b) ) { - return u3m_bail(c3__exit); - } else { - u3_noun i_b = u3h(b); - u3_noun t_b = u3t(b); - u3_noun c; - - if ( u3_none == (c = u3qdi_put(a, i_b)) ) { - return u3m_bail(c3__exit); - } else { - u3_noun d = u3qdi_gas(c, t_b); - - u3z(c); - return d; - } - } - } +u3_noun +u3qdi_gas(u3_noun a, + u3_noun b) +{ + if ( u3_nul == b ) { + return u3k(a); } - u3_noun - u3wdi_gas(u3_noun cor) - { - u3_noun a, b; + else { + u3_noun i_b, t_b; + u3x_cell(b, &i_b, &t_b); - if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdi_gas(a, b); - } + u3_noun c = u3qdi_put(a, i_b); + u3_noun d = u3qdi_gas(c, t_b); + u3z(c); + return d; } - u3_noun - u3kdi_gas(u3_noun a, - u3_noun b) - { - u3_weak c = u3qdi_gas(a, b); +} - u3z(a); u3z(b); - if ( u3_none == c ) { - return u3m_bail(c3__exit); - } - else return c; - } +u3_noun +u3wdi_gas(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_gas(a, b); +} +u3_noun +u3kdi_gas(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qdi_gas(a, b); + u3z(a); u3z(b); + return c; +} diff --git a/pkg/urbit/jets/d/in_has.c b/pkg/urbit/jets/d/in_has.c index c794e2bad..9e1b1b977 100644 --- a/pkg/urbit/jets/d/in_has.c +++ b/pkg/urbit/jets/d/in_has.c @@ -3,56 +3,42 @@ */ #include "all.h" - /* functions */ - u3_noun - u3qdi_has(u3_noun a, - u3_noun b) - { - if ( u3_nul == a ) { - return c3n; +u3_noun +u3qdi_has(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return c3n; + } + else { + u3_noun n_a, lr_a; + u3x_cell(a, &n_a, &lr_a); + + if ( (c3y == u3r_sing(b, n_a)) ) { + return c3y; } else { - u3_noun l_a, n_a, r_a; - - if ( (c3n == u3r_mean(a, 2, &n_a, 6, &l_a, 7, &r_a, 0)) ) { - return u3m_bail(c3__exit); - } - else { - if ( (c3y == u3r_sing(b, n_a)) ) { - return c3y; - } - else { - if ( c3y == u3qc_gor(b, n_a) ) { - return u3qdi_has(l_a, b); - } - else return u3qdi_has(r_a, b); - } - } + return ( c3y == u3qc_gor(b, n_a) ) ? u3qdi_has(u3h(lr_a), b) + : u3qdi_has(u3t(lr_a), b); } } - u3_noun - u3wdi_has(u3_noun cor) - { - u3_noun a, b; +} - if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdi_has(a, b); - } - } - u3_noun - u3kdi_has(u3_noun a, - u3_noun b) - { - u3_weak c = u3qdi_has(a, b); - - u3z(a); u3z(b); - if ( u3_none == c ) { - return u3m_bail(c3__exit); - } - else return c; - } +u3_noun +u3wdi_has(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_has(a, b); +} +u3_noun +u3kdi_has(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qdi_has(a, b); + u3z(a); u3z(b); + return c; +} diff --git a/pkg/urbit/jets/d/in_put.c b/pkg/urbit/jets/d/in_put.c index 827b8e52b..2f6301035 100644 --- a/pkg/urbit/jets/d/in_put.c +++ b/pkg/urbit/jets/d/in_put.c @@ -3,100 +3,84 @@ */ #include "all.h" - /* functions */ - u3_noun - u3qdi_put(u3_noun a, - u3_noun b) - { - if ( u3_nul == a ) { - return u3nt(u3k(b), u3_nul, u3_nul); +u3_noun +u3qdi_put(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return u3nt(u3k(b), u3_nul, u3_nul); + } + else { + u3_noun n_a, lr_a; + u3x_cell(a, &n_a, &lr_a); + + if ( c3y == u3r_sing(n_a, b) ) { + return u3k(a); } else { - u3_noun l_a, n_a, r_a, lr_a; // XX copy tree boilerplate to other pt4 - u3_noun c, l_c, n_c, r_c; + u3_noun c, n_c, l_c, r_c; + u3_noun l_a, r_a; + u3x_cell(lr_a, &l_a, &r_a); - if ( (c3n == u3r_cell(a, &n_a, &lr_a)) ) { - return u3m_bail(c3__exit); - } - else if ( c3y == u3r_sing(n_a, b) ) { - return u3k(a); - } - else if ( c3n == u3r_cell(lr_a, &l_a, &r_a) ) { - return u3m_bail(c3__exit); - } - else { - if ( c3y == u3qc_gor(b, n_a) ) { - c = u3qdi_put(l_a, b); + if ( c3y == u3qc_gor(b, n_a) ) { + c = u3qdi_put(l_a, b); - if ( c3y == u3qc_mor(n_a, u3h(c)) ) { - return u3nt(u3k(n_a), - c, - u3k(r_a)); - } - else { - u3r_trel(c, &n_c, &l_c, &r_c); - { - u3_noun d = u3nt(u3k(n_c), - u3k(l_c), - u3nt(u3k(n_a), - u3k(r_c), - u3k(r_a))); - - u3z(c); - return d; - } - } + if ( c3y == u3qc_mor(n_a, u3h(c)) ) { + return u3nt(u3k(n_a), + c, + u3k(r_a)); } else { - c = u3qdi_put(r_a, b); + u3r_trel(c, &n_c, &l_c, &r_c); + { + u3_noun d = u3nt(u3k(n_c), + u3k(l_c), + u3nt(u3k(n_a), u3k(r_c), u3k(r_a))); - if ( c3y == u3qc_mor(n_a, u3h(c)) ) { - return u3nt(u3k(n_a), - u3k(l_a), - c); + u3z(c); + return d; } - else { - u3r_trel(c, &n_c, &l_c, &r_c); - { - u3_noun d = u3nt(u3k(n_c), - u3nt(u3k(n_a), - u3k(l_a), - u3k(l_c)), - u3k(r_c)); + } + } + else { + c = u3qdi_put(r_a, b); - u3z(c); - return d; - } + if ( c3y == u3qc_mor(n_a, u3h(c)) ) { + return u3nt(u3k(n_a), + u3k(l_a), + c); + } + else { + u3r_trel(c, &n_c, &l_c, &r_c); + { + u3_noun d = u3nt(u3k(n_c), + u3nt(u3k(n_a), u3k(l_a), u3k(l_c)), + u3k(r_c)); + + u3z(c); + return d; } } } } } - u3_noun - u3wdi_put(u3_noun cor) - { - u3_noun a, b; - - if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdi_put(a, b); - } - } - u3_weak - u3kdi_put(u3_noun a, - u3_noun b) - { - // Bizarre asymmetry in old jets. - // - // (Mysterious comment in old glue code.) - // - u3_noun pro = u3qdi_put(a, b); - - u3z(a); u3z(b); - return pro; - } +} +u3_noun +u3wdi_put(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_put(a, b); +} +u3_noun +u3kdi_put(u3_noun a, + u3_noun b) +{ + u3_noun pro = u3qdi_put(a, b); + u3z(a); u3z(b); + return pro; +} diff --git a/pkg/urbit/jets/d/in_tap.c b/pkg/urbit/jets/d/in_tap.c index f82d5e4a0..648753091 100644 --- a/pkg/urbit/jets/d/in_tap.c +++ b/pkg/urbit/jets/d/in_tap.c @@ -3,53 +3,43 @@ */ #include "all.h" - /* functions */ - static u3_noun - _tap_in(u3_noun a, - u3_noun b) - { - if ( u3_nul == a ) { - return b; - } else { - u3_noun l_a, n_a, r_a; - - if ( (c3n == u3r_trel(a, &n_a, &l_a, &r_a)) ) { - u3z(b); - return u3m_bail(c3__exit); - } else { - return _tap_in(r_a, - u3nc(u3k(n_a), - _tap_in(l_a, b))); - } - } +static u3_noun +_tap_in(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return b; } + else { + u3_noun n_a, l_a, r_a; + u3x_trel(a, &n_a, &l_a, &r_a); - u3_noun - u3qdi_tap(u3_noun a) - { - return _tap_in(a, u3_nul); + return _tap_in(r_a, + u3nc(u3k(n_a), + _tap_in(l_a, b))); } - u3_noun - u3wdi_tap(u3_noun cor) - { - u3_noun a; +} - if ( c3n == u3r_mean(cor, u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdi_tap(a); - } - } - u3_noun - u3kdi_tap(u3_noun a) - { - u3_weak b = u3qdi_tap(a); +u3_noun +u3qdi_tap(u3_noun a) +{ + return _tap_in(a, u3_nul); +} - u3z(a); - if ( u3_none == b ) { - return u3m_bail(c3__exit); - } - else return b; - } +u3_noun +u3wdi_tap(u3_noun cor) +{ + u3_noun a; + u3x_mean(cor, u3x_con_sam, &a, 0); + return u3qdi_tap(a); +} + +u3_noun +u3kdi_tap(u3_noun a) +{ + u3_noun b = u3qdi_tap(a); + u3z(a); + return b; +} diff --git a/pkg/urbit/jets/d/in_uni.c b/pkg/urbit/jets/d/in_uni.c index a945f665e..cc18ecd37 100644 --- a/pkg/urbit/jets/d/in_uni.c +++ b/pkg/urbit/jets/d/in_uni.c @@ -5,100 +5,93 @@ /* internal functions */ - static u3_noun _in_uni(u3_noun a, u3_noun b) { - u3_noun n_a, l_a, r_a, - n_b, l_b, r_b, - neb, sub, naw, pro; if ( u3_nul == a ) { return u3k(b); } else if ( u3_nul == b ) { return u3k(a); } - else if ( (c3n == u3r_trel(a, &n_a, &l_a, &r_a)) - || (c3n == u3r_trel(b, &n_b, &l_b, &r_b)) ) - { - return u3m_bail(c3__exit); - } - else if ( c3n == u3qc_mor(n_a, n_b) ) { - if ( c3y == u3r_sing(n_a, n_b) ) { + else { + u3_noun n_a, l_a, r_a, + n_b, l_b, r_b, + neb, sub, naw, pro; + u3x_trel(a, &n_a, &l_a, &r_a); + u3x_trel(b, &n_b, &l_b, &r_b); + + if ( c3n == u3qc_mor(n_a, n_b) ) { + if ( c3y == u3r_sing(n_a, n_b) ) { + return u3nt(u3k(n_b), _in_uni(l_a, l_b), _in_uni(r_a, r_b)); + } + else if ( c3y == u3qc_gor(n_a, n_b) ) { + naw = u3nt(u3k(n_a), u3k(l_a), u3_nul); + sub = _in_uni(naw, l_b); + neb = u3nt(u3k(n_b), sub, u3k(r_b)); + pro = _in_uni(r_a, neb); + u3z(naw); u3z(neb); + return pro; + } + else { + naw = u3nt(u3k(n_a), u3_nul, u3k(r_a)); + sub = _in_uni(naw, r_b); + neb = u3nt(u3k(n_b), u3k(l_b), sub); + pro = _in_uni(l_a, neb); + u3z(naw); u3z(neb); + return pro; + } + } + else if ( c3y == u3r_sing(n_b, n_a) ) { return u3nt(u3k(n_b), _in_uni(l_a, l_b), _in_uni(r_a, r_b)); } - else if ( c3y == u3qc_gor(n_a, n_b) ) { - naw = u3nt(u3k(n_a), u3k(l_a), u3_nul); - sub = _in_uni(naw, l_b); - neb = u3nt(u3k(n_b), sub, u3k(r_b)); - pro = _in_uni(r_a, neb); - u3z(naw); u3z(neb); + else if ( c3y == u3qc_gor(n_b, n_a) ) { + neb = u3nt(u3k(n_b), u3k(l_b), u3_nul); + sub = _in_uni(l_a, neb); + naw = u3nt(u3k(n_a), sub, u3k(r_a)); + pro = _in_uni(naw, r_b); + u3z(neb); u3z(naw); return pro; } else { - naw = u3nt(u3k(n_a), u3_nul, u3k(r_a)); - sub = _in_uni(naw, r_b); - neb = u3nt(u3k(n_b), u3k(l_b), sub); - pro = _in_uni(l_a, neb); - u3z(naw); u3z(neb); + neb = u3nt(u3k(n_b), u3_nul, u3k(r_b)); + sub = _in_uni(r_a, neb); + naw = u3nt(u3k(n_a), u3k(l_a), sub); + pro = _in_uni(naw, l_b); + u3z(neb); u3z(naw); return pro; } } - else if ( c3y == u3r_sing(n_b, n_a) ) { - return u3nt(u3k(n_b), _in_uni(l_a, l_b), _in_uni(r_a, r_b)); - } - else if ( c3y == u3qc_gor(n_b, n_a) ) { - neb = u3nt(u3k(n_b), u3k(l_b), u3_nul); - sub = _in_uni(l_a, neb); - naw = u3nt(u3k(n_a), sub, u3k(r_a)); - pro = _in_uni(naw, r_b); - u3z(neb); u3z(naw); - return pro; - } - else { - neb = u3nt(u3k(n_b), u3_nul, u3k(r_b)); - sub = _in_uni(r_a, neb); - naw = u3nt(u3k(n_a), u3k(l_a), sub); - pro = _in_uni(naw, l_b); - u3z(neb); u3z(naw); - return pro; - } } - /* functions */ - u3_noun - u3kdi_uni(u3_noun a, - u3_noun b) - { - u3_noun c = u3qdi_uni(a, b); +u3_noun +u3kdi_uni(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qdi_uni(a, b); + u3z(a); u3z(b); + return c; +} - u3z(a); - u3z(b); - return c; +u3_noun +u3qdi_uni(u3_noun a, + u3_noun b) +{ + if ( c3y == u3r_sing(a, b) ) { + return u3k(a); } - - u3_noun - u3qdi_uni(u3_noun a, - u3_noun b) - { - if ( c3y == u3r_sing(a, b) ) { - return u3k(a); - } - else { - return _in_uni(a, b); - } + else { + return _in_uni(a, b); } - u3_noun - u3wdi_uni(u3_noun cor) - { - u3_noun a, b; +} - if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdi_uni(a, b); - } - } +u3_noun +u3wdi_uni(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_uni(a, b); +} diff --git a/pkg/urbit/jets/d/in_wyt.c b/pkg/urbit/jets/d/in_wyt.c index ce7a11bbf..de4d659a1 100644 --- a/pkg/urbit/jets/d/in_wyt.c +++ b/pkg/urbit/jets/d/in_wyt.c @@ -5,26 +5,24 @@ /* functions */ - u3_noun u3wdi_wyt(u3_noun cor) - { - u3_noun a; - if ( c3n == u3r_mean(cor, u3x_con_2, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdi_wyt(a); - } +u3_noun +u3qdi_wyt(u3_noun a) +{ + if ( u3_nul == a ) { + return 0; } - - u3_noun u3qdi_wyt(u3_noun a) - { + else { u3_noun n_a, l_a, r_a; - if ( u3_nul == a ) { - return 0; - } - else if ( c3n == u3r_trel(a, &n_a, &l_a, &r_a) ) { - return u3m_bail(c3__exit); - } - else { - return u3i_vint(u3ka_add(u3qdi_wyt(l_a), u3qdi_wyt(r_a))); - } + u3x_trel(a, &n_a, &l_a, &r_a); + + return u3i_vint(u3ka_add(u3qdi_wyt(l_a), u3qdi_wyt(r_a))); } +} + +u3_noun +u3wdi_wyt(u3_noun cor) +{ + u3_noun a; + u3x_mean(cor, u3x_con_2, &a, 0); + return u3qdi_wyt(a); +} From 358088a8268f0cc8c8e1cd266b005d22d6024b5c Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Tue, 10 Sep 2019 17:26:13 -0700 Subject: [PATCH 4/6] u3: refactors disabled set treap jet (+int:in) --- pkg/urbit/jets/d/in_int.c | 108 ++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 63 deletions(-) diff --git a/pkg/urbit/jets/d/in_int.c b/pkg/urbit/jets/d/in_int.c index 3922c58dc..c5341235b 100644 --- a/pkg/urbit/jets/d/in_int.c +++ b/pkg/urbit/jets/d/in_int.c @@ -3,74 +3,56 @@ */ #include "all.h" - /* functions */ - u3_noun - u3qdi_int(u3_noun a, - u3_noun b) - { - if ( u3_nul == a ) { - return u3k(u3_nul); +u3_noun +u3qdi_int(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return u3k(u3_nul); + } + else if ( u3_nul == b ) { + return u3k(u3_nul); + } + else { + u3_noun l_a, n_a, r_a, lr_a; + u3_noun l_b, n_b, r_b, lr_b; + u3_noun c; + u3x_cell(a, &n_a, &lr_a); + u3x_cell(b, &n_b, &lr_b); + + if ( c3y == u3qc_mor(n_b, n_a) ) { + c = a; a = b; b = c; + c = n_a; n_a = n_b; n_b = c; + c = lr_a; lr_a = lr_b; lr_b = c; } - else if ( u3_nul == b ) { - return u3k(u3_nul); + + u3x_cell(lr_a, &l_a, &r_a); + u3x_cell(lr_b, &l_b, &r_b); + + if ( c3y == u3r_sing(n_a, n_b) ) { + return u3nt(u3k(n_a), + u3qdi_int(l_a, l_b), + u3qdi_int(r_a, r_b)); + } + else if ( c3y == u3qc_gor(n_b, n_a) ) { + return u3qdi_uni(u3qdi_int(l_a, u3nt(n_b, l_b, u3_nul)), + u3qdi_int(a, r_b)); } else { - u3_noun l_a, n_a, r_a, lr_a; - u3_noun l_b, n_b, r_b, lr_b; - u3_noun c; - - if ( (c3n == u3r_cell(a, &n_a, &lr_a)) ) { - return u3m_bail(c3__exit); - } - else if ( (c3n == u3r_cell(b, &n_b, &lr_b)) ) { - return u3m_bail(c3__exit); - } - else { - if ( c3y == u3qc_mor(n_b, n_a) ) { - c = a; a = b; b = c; - c = n_a; n_a = n_b; n_b = c; - c = lr_a; lr_a = lr_b; lr_b = c; - } - if ( c3n == u3r_cell(lr_a, &l_a, &r_a) ) { - return u3m_bail(c3__exit); - } - else if ( c3n == u3r_cell(lr_b, &l_b, &r_b) ) { - return u3m_bail(c3__exit); - } - else if ( c3y == u3r_sing(n_a, n_b) ) { - return u3nt(u3k(n_a), - u3qdi_int(l_a, l_b), - u3qdi_int(r_a, r_b)); - } - else if ( c3y == u3qc_gor(n_b, n_a) ) { - return u3qdi_uni(u3qdi_int(l_a, - u3nt(n_b, - l_b, - u3_nul)), - u3qdi_int(a, - r_b)); - } - else { - return u3qdi_uni(u3qdi_int(r_a, - u3nt(n_b, - u3_nul, - r_b)), - u3qdi_int(a, - l_b)); - } - } + return u3qdi_uni(u3qdi_int(r_a, u3nt(n_b, u3_nul, r_b)), + u3qdi_int(a, l_b)); } } - u3_noun - u3wdi_int(u3_noun cor) - { - u3_noun a, b; +} - if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdi_int(a, b); - } - } +// XX disabled in tree.c, reference counts presumed wrong +// +u3_noun +u3wdi_int(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_int(a, b); +} From 145bf47c274004c2ee5f2b24fc19b5eaf466315b Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Tue, 10 Sep 2019 17:22:32 -0700 Subject: [PATCH 5/6] u3: refactors map treap jets (+by) --- pkg/urbit/jets/d/by_bif.c | 118 +++++++++++++------------- pkg/urbit/jets/d/by_del.c | 172 +++++++++++++++++--------------------- pkg/urbit/jets/d/by_dif.c | 124 +++++++++++++-------------- pkg/urbit/jets/d/by_gas.c | 84 +++++++------------ pkg/urbit/jets/d/by_get.c | 109 +++++++++++------------- pkg/urbit/jets/d/by_has.c | 81 ++++++++---------- pkg/urbit/jets/d/by_jab.c | 74 +++++++--------- pkg/urbit/jets/d/by_put.c | 168 +++++++++++++++++-------------------- 8 files changed, 408 insertions(+), 522 deletions(-) diff --git a/pkg/urbit/jets/d/by_bif.c b/pkg/urbit/jets/d/by_bif.c index fa4a91849..0edd9f8b1 100644 --- a/pkg/urbit/jets/d/by_bif.c +++ b/pkg/urbit/jets/d/by_bif.c @@ -5,78 +5,72 @@ /* internal functions */ - static - u3_noun _b_bif_putroot(u3_noun a, - u3_noun b) - { - if ( u3_nul == a) { - return u3nt(u3k(b), u3_nul, u3_nul); +static u3_noun +_b_bif_putroot(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return u3nt(u3k(b), u3_nul, u3_nul); + } + else { + u3_noun n_a, l_a, r_a; + u3_noun p_n_a, q_n_a; + u3_noun p_b, q_b; + u3x_trel(a, &n_a, &l_a, &r_a); + u3x_cell(b, &p_b, &q_b); + u3x_cell(n_a, &p_n_a, &q_n_a); + + if ( c3y == u3r_sing(p_b, p_n_a) ) { + return u3nt(u3k(b), u3k(l_a), u3k(r_a)); } else { - u3_noun n_a, l_a, r_a; - u3_noun p_n_a, q_n_a; - u3_noun p_b, q_b; + u3_noun c, n_c, l_c, r_c; + u3_noun d; - if ( (c3n == u3r_trel(a, &n_a, &l_a, &r_a)) - || (c3n == u3r_cell(b, &p_b, &q_b)) - || (c3n == u3r_cell(n_a, &p_n_a, &q_n_a)) ) { - return u3m_bail(c3__exit); - } - else if ( c3y == u3r_sing(p_b, p_n_a) ) { - return u3nt(u3k(b), u3k(l_a), u3k(r_a)); + if ( c3y == u3qc_gor(p_b, p_n_a) ) { + c = _b_bif_putroot(l_a, b); + u3r_trel(c, &n_c, &l_c, &r_c); + d = u3nt(u3k(n_c), + u3k(l_c), + u3nt(u3k(n_a), u3k(r_c), u3k(r_a)) + ); + u3z(c); + return d; } else { - u3_noun c, n_c, l_c, r_c; - u3_noun d; - - if ( c3y == u3qc_gor(p_b, p_n_a) ) { - c = _b_bif_putroot(l_a, b); - u3r_trel(c, &n_c, &l_c, &r_c); - d = u3nt(u3k(n_c), - u3k(l_c), - u3nt(u3k(n_a), u3k(r_c), u3k(r_a)) - ); - u3z(c); - return d; - } else { - c = _b_bif_putroot(r_a, b); - u3r_trel(c, &n_c, &l_c, &r_c); - d = u3nt(u3k(n_c), - u3nt(u3k(n_a), u3k(l_a), u3k(l_c)), - u3k(r_c) - ); - u3z(c); - return d; - } + c = _b_bif_putroot(r_a, b); + u3r_trel(c, &n_c, &l_c, &r_c); + d = u3nt(u3k(n_c), + u3nt(u3k(n_a), u3k(l_a), u3k(l_c)), + u3k(r_c) + ); + u3z(c); + return d; } } } +} /* functions */ - u3_noun u3wdb_bif(u3_noun cor) - { - u3_noun a, b; - if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdb_bif(a, b); - } - } +u3_noun +u3wdb_bif(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_bif(a, b); +} - u3_noun u3qdb_bif(u3_noun a, - u3_noun b) - { - u3_noun c, n_c, l_c, r_c; - u3_noun d; +u3_noun +u3qdb_bif(u3_noun a, + u3_noun b) +{ + u3_noun c, n_c, l_c, r_c; + u3_noun d; - c = _b_bif_putroot(a, b); - u3r_trel(c, &n_c, &l_c, &r_c); - d = u3nc(u3k(l_c), u3k(r_c)); - u3z(c); - return d; - } - - /* - u3_weak u3kdi_bif(u3_noun a, u3_noun b); - */ + c = _b_bif_putroot(a, b); + u3r_trel(c, &n_c, &l_c, &r_c); + d = u3nc(u3k(l_c), u3k(r_c)); + u3z(c); + return d; +} diff --git a/pkg/urbit/jets/d/by_del.c b/pkg/urbit/jets/d/by_del.c index 0a17e9db5..1dc719c0a 100644 --- a/pkg/urbit/jets/d/by_del.c +++ b/pkg/urbit/jets/d/by_del.c @@ -5,107 +5,89 @@ /* functions */ - static u3_noun - _rebalance(u3_noun a) - { - u3_noun l_a, n_a, r_a; +static u3_noun +_rebalance(u3_noun a) +{ + u3_noun n_a, l_a, r_a; + u3x_trel(a, &n_a, &l_a, &r_a); - if ( c3n == u3r_trel(a, &n_a, &l_a, &r_a) ) { - return u3m_bail(c3__exit); + if ( u3_nul == l_a) { + return u3k(r_a); + } + else if ( u3_nul == r_a) { + return u3k(l_a); + } + else { + u3_noun n_l_a, l_l_a, r_l_a; + u3_noun n_r_a, l_r_a, r_r_a; + u3x_trel(l_a, &n_l_a, &l_l_a, &r_l_a); + u3x_trel(r_a, &n_r_a, &l_r_a, &r_r_a); + + if ( c3y == u3qc_mor(u3h(n_l_a), u3h(n_r_a)) ) { + u3_noun new_right = u3nt(u3k(n_a), + u3k(r_l_a), + u3k(r_a)); + + u3_noun ret = u3nt(u3k(n_l_a), + u3k(l_l_a), + _rebalance(new_right)); + u3z(new_right); + + return ret; } else { - if ( u3_nul == l_a) { - return u3k(r_a); - } - else if ( u3_nul == r_a) { - return u3k(l_a); + u3_noun new_left = u3nt(u3k(n_a), + u3k(l_a), + u3k(l_r_a)); + + u3_noun ret = u3nt(u3k(n_r_a), + _rebalance(new_left), + u3k(r_r_a)); + u3z(new_left); + + return ret; + } + } +} + +u3_noun +u3qdb_del(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return u3_nul; + } + else { + u3_noun n_a, lr_a; + u3_noun pn_a; + u3x_cell(a, &n_a, &lr_a); + u3x_cell(n_a, &pn_a, 0); + + if ( c3y == u3r_sing(pn_a, b) ) { + return _rebalance(a); + } + else { + u3_noun l_a, r_a; + u3x_cell(lr_a, &l_a, &r_a); + + if ( c3y == u3qc_gor(b, pn_a) ) { + return u3nt(u3k(n_a), + u3qdb_del(l_a, b), + u3k(r_a)); } else { - u3_noun n_l_a, l_l_a, r_l_a; - u3_noun n_r_a, l_r_a, r_r_a; - - if ( (c3n == u3r_trel(l_a, &n_l_a, &l_l_a, &r_l_a) ) || - (c3n == u3r_trel(r_a, &n_r_a, &l_r_a, &r_r_a) ) || - (c3n == u3du(n_l_a)) || - (c3n == u3du(n_r_a)) ) { - return u3m_bail(c3__exit); - } - else { - if ( c3y == u3qc_mor(u3h(n_l_a), u3h(n_r_a)) ) { - u3_noun new_right = u3nt(u3k(n_a), - u3k(r_l_a), - u3k(r_a)); - - u3_noun ret = u3nt(u3k(n_l_a), - u3k(l_l_a), - _rebalance(new_right)); - u3z(new_right); - - return ret; - } - else { - u3_noun new_left = u3nt(u3k(n_a), - u3k(l_a), - u3k(l_r_a)); - - u3_noun ret = u3nt(u3k(n_r_a), - _rebalance(new_left), - u3k(r_r_a)); - u3z(new_left); - - return ret; - } - } + return u3nt(u3k(n_a), + u3k(l_a), + u3qdb_del(r_a, b)); } } } +} - u3_noun - u3qdb_del(u3_noun a, - u3_noun b) - { - if ( u3_nul == a ) { - return u3_nul; - } - else { - u3_noun l_a, n_a, r_a, pn_a, qn_a; - - if ( (c3n == u3r_trel(a, &n_a, &l_a, &r_a)) || - (c3n == u3r_cell(n_a, &pn_a, &qn_a)) ) - { - return u3m_bail(c3__exit); - } - else if ( c3n == u3r_sing(pn_a, b) ) { - if ( c3y == u3qc_gor(b, pn_a) ) { - return u3nt(u3k(n_a), - u3qdb_del(l_a, b), - u3k(r_a)); - } - else { - return u3nt(u3k(n_a), - u3k(l_a), - u3qdb_del(r_a, b)); - } - } - else { - return _rebalance(a); - } - } - } - - u3_noun - u3wdb_del(u3_noun cor) - { - u3_noun a, b; - - if ( c3n == u3r_mean(cor, u3x_sam, &b, - u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } - else { - u3_noun n = u3qdb_del(a, b); - return n; - } - } - - +u3_noun +u3wdb_del(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_del(a, b); +} diff --git a/pkg/urbit/jets/d/by_dif.c b/pkg/urbit/jets/d/by_dif.c index d6e88cb6f..8c491f61a 100644 --- a/pkg/urbit/jets/d/by_dif.c +++ b/pkg/urbit/jets/d/by_dif.c @@ -5,82 +5,70 @@ /* internal functions */ - static - u3_noun _b_dif_join(u3_noun d, - u3_noun e) - { - if ( u3_nul == d ) { - return u3k(e); - } else if (u3_nul == e) { - return u3k(d); - } else { - u3_noun n_d, l_d, r_d; - u3_noun n_e, l_e, r_e; - u3_noun p_n_d, q_n_d; - u3_noun p_n_e, q_n_e; +static u3_noun +_b_dif_join(u3_noun d, + u3_noun e) +{ + if ( u3_nul == d ) { + return u3k(e); + } + else if ( u3_nul == e ) { + return u3k(d); + } + else { + u3_noun n_d, lr_d; + u3_noun n_e, lr_e; + u3x_cell(d, &n_d, &lr_d); + u3x_cell(e, &n_e, &lr_e); - if ( c3n == u3r_trel(d, &n_d, &l_d, &r_d) - || c3n == u3r_trel(e, &n_e, &l_e, &r_e) - || c3n == u3r_cell(n_d, &p_n_d, &q_n_d) - || c3n == u3r_cell(n_e, &p_n_e, &q_n_e) ) { - return u3m_bail(c3__exit); - } else { - if ( c3y == u3qc_mor(p_n_d, p_n_e) ) { - return u3nt(u3k(n_d), - u3k(l_d), - _b_dif_join(u3k(r_d), u3k(e))); - } else { - return u3nt(u3k(n_e), - _b_dif_join(u3k(d), u3k(l_e)), - u3k(r_e)); - } - } + if ( c3y == u3qc_mor(u3h(n_d), u3h(n_e)) ) { + u3_noun l_d, r_d; + u3x_cell(lr_d, &l_d, &r_d); + + return u3nt(u3k(n_d), + u3k(l_d), + _b_dif_join(u3k(r_d), u3k(e))); + } + else { + u3_noun l_e, r_e; + u3x_cell(lr_e, &l_e, &r_e); + + return u3nt(u3k(n_e), + _b_dif_join(u3k(d), u3k(l_e)), + u3k(r_e)); } } +} /* functions */ - u3_noun u3wdb_dif(u3_noun cor) - { - u3_noun a, b; - if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdb_dif(a, b); - } +u3_noun +u3wdb_dif(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_dif(a, b); +} + +u3_noun +u3qdb_dif(u3_noun a, + u3_noun b) +{ + if ( u3_nul == b ) { + return u3k(a); } + else { + u3_noun n_b, l_b, r_b; + u3_noun c, l_c, r_c; + u3x_trel(b, &n_b, &l_b, &r_b); - u3_noun u3qdb_dif(u3_noun a, - u3_noun b) - { - if ( u3_nul == b ) { - return u3k(a); - } else { - u3_noun n_b, l_b, r_b; - u3_noun c, l_c, r_c; + c = u3qdb_bif(a, n_b); + u3x_cell(c, &l_c, &r_c); - if ( c3n == u3r_trel(b, &n_b, &l_b, &r_b) ) { - return u3m_bail(c3__exit); - } else { + u3_noun d = u3qdb_dif(l_c, l_b); + u3_noun e = u3qdb_dif(r_c, r_b); - c = u3qdb_bif(a, n_b); - - if ( c3n == u3r_cell(c, &l_c, &r_c) ) { - return u3m_bail(c3__exit); - } else { - u3_noun d; - u3_noun e; - - d = u3qdb_dif(l_c, l_b); - e = u3qdb_dif(r_c, r_b); - u3z(c); - - return _b_dif_join(d, e); - } - } - } + u3z(c); + return _b_dif_join(d, e); } - - /* - u3_weak u3kdb_dif(u3_noun a, u3_noun b); - */ +} diff --git a/pkg/urbit/jets/d/by_gas.c b/pkg/urbit/jets/d/by_gas.c index caa7f5291..e14c9833c 100644 --- a/pkg/urbit/jets/d/by_gas.c +++ b/pkg/urbit/jets/d/by_gas.c @@ -3,63 +3,41 @@ */ #include "all.h" - /* functions */ - u3_noun - u3qdb_gas(u3_noun a, - u3_noun b) - { - if ( u3_nul == b ) { - return u3k(a); - } - else { - if ( c3n == u3du(b) ) { - return u3m_bail(c3__exit); - } else { - u3_noun i_b = u3h(b); - u3_noun t_b = u3t(b); - - if ( c3n == u3du(i_b) ) { - return u3m_bail(c3__exit); - } else { - u3_noun pi_b = u3h(i_b); - u3_noun qi_b = u3t(i_b); - u3_noun c; - - if ( u3_none == (c = u3qdb_put(a, pi_b, qi_b)) ) { - return u3m_bail(c3__exit); - } else { - u3_noun d = u3qdb_gas(c, t_b); - - u3z(c); - return d; - } - } - } - } +u3_noun +u3qdb_gas(u3_noun a, + u3_noun b) +{ + if ( u3_nul == b ) { + return u3k(a); } - u3_noun - u3wdb_gas(u3_noun cor) - { - u3_noun a, b; + else { + u3_noun i_b, t_b, + pi_b, qi_b; + u3x_cell(b, &i_b, &t_b); + u3x_cell(i_b, &pi_b, &qi_b); - if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdb_gas(a, b); - } + u3_noun c = u3qdb_put(a, pi_b, qi_b); + u3_noun d = u3qdb_gas(c, t_b); + u3z(c); + return d; } - u3_noun - u3kdb_gas(u3_noun a, - u3_noun b) - { - u3_weak c = u3qdb_gas(a, b); +} - u3z(a); u3z(b); - if ( u3_none == c ) { - return u3m_bail(c3__exit); - } - else return c; - } +u3_noun +u3wdb_gas(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_gas(a, b); +} +u3_noun +u3kdb_gas(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qdb_gas(a, b); + u3z(a); u3z(b); + return c; +} diff --git a/pkg/urbit/jets/d/by_get.c b/pkg/urbit/jets/d/by_get.c index 588578764..cecd15d67 100644 --- a/pkg/urbit/jets/d/by_get.c +++ b/pkg/urbit/jets/d/by_get.c @@ -3,75 +3,60 @@ */ #include "all.h" - /* functions */ - u3_noun - u3qdb_get(u3_noun a, - u3_noun b) - { - if ( u3_nul == a ) { - return u3_nul; +u3_noun +u3qdb_get(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return u3_nul; + } + else { + u3_noun n_a, lr_a; + u3_noun pn_a, qn_a; + u3x_cell(a, &n_a, &lr_a); + u3x_cell(n_a, &pn_a, &qn_a); + + if ( (c3y == u3r_sing(b, pn_a)) ) { + return u3nc(u3_nul, u3k(qn_a)); } else { - u3_noun l_a, n_a, r_a; - u3_noun pn_a, qn_a; - - if ( (c3n == u3r_trel(a, &n_a, &l_a, &r_a)) || - (c3n == u3r_cell(n_a, &pn_a, &qn_a) ) ) - { - return u3m_bail(c3__exit); - } - else { - if ( (c3y == u3r_sing(b, pn_a)) ) { - return u3nc(u3_nul, u3k(qn_a)); - } - else { - if ( c3y == u3qc_gor(b, pn_a) ) { - return u3qdb_get(l_a, b); - } - else return u3qdb_get(r_a, b); - } - } + return ( c3y == u3qc_gor(b, pn_a) ) ? u3qdb_get(u3h(lr_a), b) + : u3qdb_get(u3t(lr_a), b); } } - u3_noun - u3wdb_get(u3_noun cor) - { - u3_noun a, b; +} - if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdb_get(a, b); - } +u3_noun +u3wdb_get(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_get(a, b); +} + +u3_weak +u3kdb_get(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qdb_get(a, b); + u3z(a); u3z(b); + + if ( c3n == u3r_du(c) ) { + u3z(c); + return u3_none; } - u3_weak - u3kdb_get(u3_noun a, - u3_noun b) - { - u3_noun c = u3qdb_get(a, b); - - u3z(a); u3z(b); - if ( c3n == u3r_du(c) ) { - u3z(c); - return u3_none; - } else { - u3_noun pro = u3k(u3t(c)); - - u3z(c); - return pro; - } - } - u3_noun - u3kdb_got(u3_noun a, - u3_noun b) - { - u3_weak c = u3kdb_get(a, b); - - if ( u3_none == c ) { - return u3m_bail(c3__exit); - } - else return c; + else { + u3_noun pro = u3k(u3t(c)); + u3z(c); + return pro; } +} +u3_noun +u3kdb_got(u3_noun a, + u3_noun b) +{ + return u3x_good(u3kdb_get(a, b)); +} diff --git a/pkg/urbit/jets/d/by_has.c b/pkg/urbit/jets/d/by_has.c index 0fa41bf3e..702c38931 100644 --- a/pkg/urbit/jets/d/by_has.c +++ b/pkg/urbit/jets/d/by_has.c @@ -3,59 +3,44 @@ */ #include "all.h" - /* functions */ - u3_noun - u3qdb_has(u3_noun a, - u3_noun b) - { - if ( u3_nul == a ) { - return c3n; +u3_noun +u3qdb_has(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return c3n; + } + else { + u3_noun n_a, lr_a; + u3_noun pn_a; + u3x_cell(a, &n_a, &lr_a); + u3x_cell(n_a, &pn_a, 0); + + if ( (c3y == u3r_sing(b, pn_a)) ) { + return c3y; } else { - u3_noun l_a, n_a, r_a; - u3_noun pn_a, qn_a; - - if ( (c3n == u3r_trel(a, &n_a, &l_a, &r_a)) || - (c3n == u3r_cell(n_a, &pn_a, &qn_a)) ) - { - return u3m_bail(c3__exit); - } - else { - if ( (c3y == u3r_sing(b, pn_a)) ) { - return c3y; - } - else { - if ( c3y == u3qc_gor(b, pn_a) ) { - return u3qdb_has(l_a, b); - } - else return u3qdb_has(r_a, b); - } - } + return ( c3y == u3qc_gor(b, pn_a) ) ? u3qdb_has(u3h(lr_a), b) + : u3qdb_has(u3t(lr_a), b); } } - u3_noun - u3wdb_has(u3_noun cor) - { - u3_noun a, b; +} - if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdb_has(a, b); - } - } - u3_noun - u3kdb_has(u3_noun a, - u3_noun b) - { - u3_weak c = u3qdb_has(a, b); - - u3z(a); u3z(b); - if ( u3_none == c ) { - return u3m_bail(c3__exit); - } - else return c; - } +u3_noun +u3wdb_has(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_has(a, b); +} +u3_noun +u3kdb_has(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qdb_has(a, b); + u3z(a); u3z(b); + return c; +} diff --git a/pkg/urbit/jets/d/by_jab.c b/pkg/urbit/jets/d/by_jab.c index f147232a2..7b926d35a 100644 --- a/pkg/urbit/jets/d/by_jab.c +++ b/pkg/urbit/jets/d/by_jab.c @@ -3,54 +3,44 @@ */ #include "all.h" - /* functions */ - u3_noun - u3qdb_jab(u3_noun a, - u3_noun key, - u3_noun fun) - { - if ( u3_nul == a ) { - return u3m_bail(c3__exit); +u3_noun +u3qdb_jab(u3_noun a, + u3_noun key, + u3_noun fun) +{ + if ( u3_nul == a ) { + return u3m_bail(c3__exit); + } + else { + u3_noun n_a, lr_a; + u3_noun pn_a, qn_a; + u3x_cell(a, &n_a, &lr_a); + u3x_cell(n_a, &pn_a, &qn_a); + + if ( (c3y == u3r_sing(key, pn_a)) ) { + u3_noun value = u3n_slam_on(u3k(fun), u3k(qn_a)); + return u3nc(u3nc(u3k(pn_a), value), u3k(u3t(a))); } else { - u3_noun l_a, n_a, r_a; - u3_noun pn_a, qn_a; + u3_noun l_a, r_a; + u3x_cell(lr_a, &l_a, &r_a); - if ( (c3n == u3r_trel(a, &n_a, &l_a, &r_a)) || - (c3n == u3r_cell(n_a, &pn_a, &qn_a) ) ) - { - return u3m_bail(c3__exit); - } - else { - if ( (c3y == u3r_sing(key, pn_a)) ) { - u3_noun value = u3n_slam_on(u3k(fun), u3k(qn_a)); - return u3nc(u3nc(u3k(pn_a), value), u3k(u3t(a))); - } - else { - if ( c3y == u3qc_gor(key, pn_a) ) { - return u3nt(u3k(n_a), u3qdb_jab(l_a, key, fun), u3k(r_a)); - } - else { - return u3nt(u3k(n_a), u3k(l_a), u3qdb_jab(r_a, key, fun)); - } - } - } + return ( c3y == u3qc_gor(key, pn_a) ) + ? u3nt(u3k(n_a), u3qdb_jab(l_a, key, fun), u3k(r_a)) + : u3nt(u3k(n_a), u3k(l_a), u3qdb_jab(r_a, key, fun)); } } +} - u3_noun - u3wdb_jab(u3_noun cor) - { - u3_noun a, key, fun; +u3_noun +u3wdb_jab(u3_noun cor) +{ + u3_noun a, key, fun; + u3x_mean(cor, u3x_sam_2, &key, + u3x_sam_3, &fun, + u3x_con_sam, &a, 0); - if ( c3n == u3r_mean(cor, u3x_sam_2, &key, - u3x_sam_3, &fun, - u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - u3_noun n = u3qdb_jab(a, key, fun); - return n; - } - } + return u3qdb_jab(a, key, fun); +} diff --git a/pkg/urbit/jets/d/by_put.c b/pkg/urbit/jets/d/by_put.c index a0f755fc4..3734c8adf 100644 --- a/pkg/urbit/jets/d/by_put.c +++ b/pkg/urbit/jets/d/by_put.c @@ -3,115 +3,99 @@ */ #include "all.h" - /* functions */ - u3_noun - u3qdb_put(u3_noun a, - u3_noun b, - u3_noun c) - { - if ( u3_nul == a ) { - return u3nt( - u3nc(u3k(b), - u3k(c)), - u3_nul, - u3_nul); - } - else { - u3_noun l_a, n_a, r_a, pn_a, qn_a; - u3_noun d, l_d, n_d, r_d; +u3_noun +u3qdb_put(u3_noun a, + u3_noun b, + u3_noun c) +{ + if ( u3_nul == a ) { + return u3nt(u3nc(u3k(b), u3k(c)), + u3_nul, + u3_nul); + } + else { + u3_noun n_a, l_a, r_a; + u3_noun pn_a, qn_a; + u3x_trel(a, &n_a, &l_a, &r_a); + u3x_cell(n_a, &pn_a, &qn_a); - if ( (c3n == u3r_trel(a, &n_a, &l_a, &r_a)) || - (c3n == u3r_cell(n_a, &pn_a, &qn_a)) ) - { - return u3m_bail(c3__exit); + if ( c3y == u3r_sing(pn_a, b) ) { + if ( c3y == u3r_sing(qn_a, c) ) { + return u3k(a); } - else if ( c3y == u3r_sing(pn_a, b) ) { - if ( c3y == u3r_sing(qn_a, c) ) { - return u3k(a); - } else { - return u3nt - (u3nc(u3k(b), u3k(c)), + else { + return u3nt(u3nc(u3k(b), u3k(c)), u3k(l_a), u3k(r_a)); + } + } + else { + u3_noun d, n_d, l_d, r_d; + + if ( c3y == u3qc_gor(b, pn_a) ) { + d = u3qdb_put(l_a, b, c); + + if ( c3y == u3qc_mor(pn_a, u3h(u3h(d))) ) { + return u3nt(u3k(n_a), + d, + u3k(r_a)); + } + else { + u3r_trel(d, &n_d, &l_d, &r_d); + + u3_noun e = u3nt(u3k(n_d), + u3k(l_d), + u3nt(u3k(n_a), + u3k(r_d), + u3k(r_a))); + + u3z(d); + return e; } } else { - if ( c3y == u3qc_gor(b, pn_a) ) { - d = u3qdb_put(l_a, b, c); + d = u3qdb_put(r_a, b, c); - if ( c3y == u3qc_mor(pn_a, u3h(u3h(d))) ) { - return u3nt(u3k(n_a), - d, - u3k(r_a)); - } - else { - u3r_trel(d, &n_d, &l_d, &r_d); - { - u3_noun e = u3nt - (u3k(n_d), - u3k(l_d), - u3nt(u3k(n_a), - u3k(r_d), - u3k(r_a))); - - u3z(d); - return e; - } - } + if ( c3y == u3qc_mor(pn_a, u3h(u3h(d))) ) { + return u3nt(u3k(n_a), + u3k(l_a), + d); } else { - d = u3qdb_put(r_a, b, c); + u3r_trel(d, &n_d, &l_d, &r_d); - if ( c3y == u3qc_mor(pn_a, u3h(u3h(d))) ) { - return u3nt(u3k(n_a), - u3k(l_a), - d); - } - else { - u3r_trel(d, &n_d, &l_d, &r_d); - { - u3_noun e = u3nt - (u3k(n_d), - u3nt(u3k(n_a), - u3k(l_a), - u3k(l_d)), - u3k(r_d)); + u3_noun e = u3nt(u3k(n_d), + u3nt(u3k(n_a), + u3k(l_a), + u3k(l_d)), + u3k(r_d)); - u3z(d); - return e; - } - } + u3z(d); + return e; } } } } - u3_noun - u3wdb_put(u3_noun cor) - { - u3_noun a, b, c; +} - if ( c3n == u3r_mean(cor, u3x_sam_2, &b, - u3x_sam_3, &c, - u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdb_put(a, b, c); - } - } - u3_weak - u3kdb_put(u3_noun a, - u3_noun b, - u3_noun c) - { - // Bizarre asymmetry in old jets. - // - // (Mysterious comment in old glue code.) - // - u3_noun pro = u3qdb_put(a, b, c); - - u3z(a); u3z(b); u3z(c); - return pro; - } +u3_noun +u3wdb_put(u3_noun cor) +{ + u3_noun a, b, c; + u3x_mean(cor, u3x_sam_2, &b, + u3x_sam_3, &c, + u3x_con_sam, &a, 0); + return u3qdb_put(a, b, c); +} +u3_noun +u3kdb_put(u3_noun a, + u3_noun b, + u3_noun c) +{ + u3_noun pro = u3qdb_put(a, b, c); + u3z(a); u3z(b); u3z(c); + return pro; +} From 076d3879cdf201ece3fda19b3cd45c869464c59b Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Tue, 10 Sep 2019 17:22:51 -0700 Subject: [PATCH 6/6] u3: refactors disabled map treap jets (+int:by and +uni:by) blah by --- pkg/urbit/jets/d/by_int.c | 156 ++++++++++++++++-------------------- pkg/urbit/jets/d/by_uni.c | 164 +++++++++++++++++--------------------- 2 files changed, 143 insertions(+), 177 deletions(-) diff --git a/pkg/urbit/jets/d/by_int.c b/pkg/urbit/jets/d/by_int.c index ec1b7cfa9..f82251411 100644 --- a/pkg/urbit/jets/d/by_int.c +++ b/pkg/urbit/jets/d/by_int.c @@ -5,101 +5,81 @@ */ #include "all.h" - /* functions */ - u3_noun - u3qdb_int(u3_noun a, - u3_noun b) - { - if ( u3_nul == a ) { - return u3k(u3_nul); - } - else if ( u3_nul == b ) { - return u3k(u3_nul); - } - else { - u3_noun l_a, n_a, r_a, lr_a, p_n_a, q_n_a; - u3_noun l_b, n_b, r_b, lr_b, p_n_b, q_n_b; +u3_noun +u3qdb_int(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return u3k(u3_nul); + } + else if ( u3_nul == b ) { + return u3k(u3_nul); + } + else { + u3_noun n_a, l_a, r_a; + u3_noun n_b, l_b, r_b; + u3_noun p_n_a, q_n_a; + u3_noun p_n_b, q_n_b; + u3x_trel(a, &n_a, &l_a, &r_a); + u3x_trel(b, &n_b, &l_b, &r_b); + u3x_cell(n_a, &p_n_a, &q_n_a); + u3x_cell(n_b, &p_n_b, &q_n_b); - if ( (c3n == u3r_cell(a, &n_a, &lr_a)) ) { - return u3m_bail(c3__exit); + if ( c3y == u3qc_mor(p_n_a, p_n_b) ) { + if ( c3y == u3r_sing(p_n_a, p_n_b) ) { + return u3nt(u3k(n_b), + u3qdb_int(u3k(l_a), u3k(l_b)), + u3qdb_int(u3k(r_a), u3k(r_b))); } - else if ( (c3n == u3r_cell(b, &n_b, &lr_b)) ) { - return u3m_bail(c3__exit); - } - else if ( c3n == u3r_cell(lr_a, &l_a, &r_a) ) { - return u3m_bail(c3__exit); - } - else if ( c3n == u3r_cell(lr_b, &l_b, &r_b) ) { - return u3m_bail(c3__exit); - } - else if ( c3n == u3r_cell(n_a, &p_n_a, &q_n_a) ) { - return u3m_bail(c3__exit); - } - else if ( c3n == u3r_cell(n_b, &p_n_b, &q_n_b) ) { - return u3m_bail(c3__exit); - } - else if ( c3y == u3qc_mor(p_n_a, p_n_b) ) { - if ( c3y == u3r_sing(p_n_a, p_n_b) ) { - return u3nt( - u3k(n_b), - u3qdb_int(u3k(l_a), u3k(l_b)), - u3qdb_int(u3k(r_a), u3k(r_b))); - } - else if ( c3y == u3qc_gor(p_n_b, p_n_a) ) { - return u3qdb_uni( - u3qdb_int(u3k(l_a), - u3nt(u3k(n_b), - u3k(l_b), - u3k(u3_nul))), - u3qdb_int(u3k(a), - u3k(r_b))); - } - else { - return u3qdb_uni( - u3qdb_int(u3k(r_a), - u3nt(u3k(n_b), - u3k(u3_nul), - u3k(r_b))), - u3qdb_int(u3k(a), - u3k(l_b))); - } - } - else if ( c3y == u3r_sing(p_n_b, p_n_a) ) { - return u3nt( - u3k(n_b), - u3qdb_int(u3k(l_b), u3k(l_a)), - u3qdb_int(u3k(r_b), u3k(r_a))); - } - else if ( c3y == u3qc_gor(p_n_a, p_n_b) ) { - return u3qdb_uni( - u3qdb_int(u3k(l_b), - u3nt(u3k(n_a), - u3k(l_a), - u3k(u3_nul))), - u3qdb_int(u3k(a), - u3k(r_a))); + else if ( c3y == u3qc_gor(p_n_b, p_n_a) ) { + return u3qdb_uni(u3qdb_int(u3k(l_a), + u3nt(u3k(n_b), + u3k(l_b), + u3k(u3_nul))), + u3qdb_int(u3k(a), + u3k(r_b))); } else { - return u3qdb_uni( - u3qdb_int(u3k(r_b), - u3nt(u3k(n_a), - u3k(u3_nul), - u3k(r_a))), - u3qdb_int(u3k(a), - u3k(l_a))); + return u3qdb_uni(u3qdb_int(u3k(r_a), + u3nt(u3k(n_b), + u3k(u3_nul), + u3k(r_b))), + u3qdb_int(u3k(a), + u3k(l_b))); } } - } - u3_noun - u3wdb_int(u3_noun cor) - { - u3_noun a, b; - - if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdb_int(a, b); + else if ( c3y == u3r_sing(p_n_b, p_n_a) ) { + return u3nt(u3k(n_b), + u3qdb_int(u3k(l_b), u3k(l_a)), + u3qdb_int(u3k(r_b), u3k(r_a))); + } + else if ( c3y == u3qc_gor(p_n_a, p_n_b) ) { + return u3qdb_uni(u3qdb_int(u3k(l_b), + u3nt(u3k(n_a), + u3k(l_a), + u3k(u3_nul))), + u3qdb_int(u3k(a), + u3k(r_a))); + } + else { + return u3qdb_uni(u3qdb_int(u3k(r_b), + u3nt(u3k(n_a), + u3k(u3_nul), + u3k(r_a))), + u3qdb_int(u3k(a), + u3k(l_a))); } } +} + +// XX disabled in tree.c, reference counts presumed wrong +// +u3_noun +u3wdb_int(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_int(a, b); +} diff --git a/pkg/urbit/jets/d/by_uni.c b/pkg/urbit/jets/d/by_uni.c index 43eb838eb..10e621dea 100644 --- a/pkg/urbit/jets/d/by_uni.c +++ b/pkg/urbit/jets/d/by_uni.c @@ -5,105 +5,91 @@ */ #include "all.h" - /* functions */ - u3_noun - u3qdb_uni(u3_noun a, - u3_noun b) - { - if ( u3_nul == a ) { - return u3k(b); - } - else if ( u3_nul == b ) { - return u3k(a); - } - else { - u3_noun l_a, n_a, r_a, lr_a, p_n_a, q_n_a; - u3_noun l_b, n_b, r_b, lr_b, p_n_b, q_n_b; +u3_noun +u3qdb_uni(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return u3k(b); + } + else if ( u3_nul == b ) { + return u3k(a); + } + else { + u3_noun n_a, l_a, r_a; + u3_noun n_b, l_b, r_b; + u3_noun p_n_a, q_n_a; + u3_noun p_n_b, q_n_b; + u3x_trel(a, &n_a, &l_a, &r_a); + u3x_trel(b, &n_b, &l_b, &r_b); + u3x_cell(n_a, &p_n_a, &q_n_a); + u3x_cell(n_b, &p_n_b, &q_n_b); - if ( (c3n == u3r_cell(a, &n_a, &lr_a)) ) { - return u3m_bail(c3__exit); - } - else if ( (c3n == u3r_cell(b, &n_b, &lr_b)) ) { - return u3m_bail(c3__exit); - } - else if ( (c3n == u3r_cell(n_a, &p_n_a, &q_n_a)) ) { - return u3m_bail(c3__exit); - } - else if ( (c3n == u3r_cell(n_b, &p_n_b, &q_n_b)) ) { - return u3m_bail(c3__exit); - } - else if ( c3n == u3r_cell(lr_a, &l_a, &r_a) ) { - return u3m_bail(c3__exit); - } - else if ( c3n == u3r_cell(lr_b, &l_b, &r_b) ) { - return u3m_bail(c3__exit); - } - else if ( c3y == u3qc_mor(p_n_a, p_n_b) ) { - if ( c3y == u3r_sing(p_n_a, p_n_b) ) { - return u3nt(u3k(n_b), - u3qdb_uni(u3k(l_a), - u3k(l_b)), - u3qdb_uni(u3k(r_a), - u3k(r_b))); - } - else if ( c3y == u3qc_gor(p_n_b, p_n_a) ) { - return u3qdb_uni( - u3nt(u3k(n_a), - u3qdb_uni(u3k(l_a), - u3nt(u3k(n_b), - u3k(l_b), - u3k(u3_nul))), - u3k(r_a)), - u3k(r_b)); - } - else { - return u3qdb_uni( - u3nt(u3k(n_a), - u3k(l_a), - u3qdb_uni(u3k(r_a), - u3nt(u3k(n_b), - u3k(u3_nul), - u3k(r_b)))), - u3k(l_b)); - } - } - else if ( c3y == u3r_sing(p_n_b, p_n_a) ) { + if ( c3y == u3qc_mor(p_n_a, p_n_b) ) { + if ( c3y == u3r_sing(p_n_a, p_n_b) ) { return u3nt(u3k(n_b), - u3qdb_uni(u3k(r_b), u3k(r_a)), - u3qdb_uni(u3k(l_b), u3k(l_a))); - } - else if ( c3y == u3qc_gor(p_n_a, p_n_b) ) { - return u3qdb_uni( - u3k(r_a), - u3nt(u3k(n_b), - u3qdb_uni(u3nt(u3k(n_a), - u3k(l_a), - u3k(u3_nul)), + u3qdb_uni(u3k(l_a), u3k(l_b)), - u3k(r_b))); + u3qdb_uni(u3k(r_a), + u3k(r_b))); + } + else if ( c3y == u3qc_gor(p_n_b, p_n_a) ) { + return u3qdb_uni( + u3nt(u3k(n_a), + u3qdb_uni(u3k(l_a), + u3nt(u3k(n_b), + u3k(l_b), + u3k(u3_nul))), + u3k(r_a)), + u3k(r_b)); } else { return u3qdb_uni( - u3k(l_a), - u3nt(u3k(n_b), - u3k(l_b), - u3qdb_uni(u3k(r_b), - u3nt(u3k(n_a), + u3nt(u3k(n_a), + u3k(l_a), + u3qdb_uni(u3k(r_a), + u3nt(u3k(n_b), u3k(u3_nul), - u3k(r_a))))); + u3k(r_b)))), + u3k(l_b)); } } - } - u3_noun - u3wdb_uni(u3_noun cor) - { - u3_noun a, b; - - if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) ) { - return u3m_bail(c3__exit); - } else { - return u3qdb_uni(a, b); + else if ( c3y == u3r_sing(p_n_b, p_n_a) ) { + return u3nt(u3k(n_b), + u3qdb_uni(u3k(r_b), u3k(r_a)), + u3qdb_uni(u3k(l_b), u3k(l_a))); + } + else if ( c3y == u3qc_gor(p_n_a, p_n_b) ) { + return u3qdb_uni( + u3k(r_a), + u3nt(u3k(n_b), + u3qdb_uni(u3nt(u3k(n_a), + u3k(l_a), + u3k(u3_nul)), + u3k(l_b)), + u3k(r_b))); + } + else { + return u3qdb_uni( + u3k(l_a), + u3nt(u3k(n_b), + u3k(l_b), + u3qdb_uni(u3k(r_b), + u3nt(u3k(n_a), + u3k(u3_nul), + u3k(r_a))))); } } +} + +// XX disabled in tree.c, reference counts presumed wrong +// +u3_noun +u3wdb_uni(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_uni(a, b); +}