From 25ae735a7e3ebd2f33fd6ae0932d6325d8c2ced8 Mon Sep 17 00:00:00 2001 From: Paul Driver Date: Fri, 27 Apr 2018 10:09:53 -0700 Subject: [PATCH] reel --- jets/b/reel.c | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/jets/b/reel.c b/jets/b/reel.c index e78e7c8ca1..567fc9c2b0 100644 --- a/jets/b/reel.c +++ b/jets/b/reel.c @@ -3,6 +3,22 @@ */ #include "all.h" + static u3_noun + _reel_in(u3j_site* sit_u, u3_noun a, u3_noun b) + { + if ( 0 == a ) { + return u3k(b); + } + else if ( c3n == u3du(a) ) { + return u3m_bail(c3__exit); + } + else { + u3_noun gim = u3k(u3h(a)); + u3_noun hur = _reel_in(sit_u, u3t(a), b); + + return u3j_gate_slam(sit_u, u3nc(gim, hur)); + } + } /* functions */ @@ -10,18 +26,12 @@ u3qb_reel(u3_noun a, u3_noun b) { - if ( 0 == a ) { - return u3k(u3r_at(u3x_sam_3, b)); - } - else if ( c3n == u3du(a) ) { - return u3m_bail(c3__exit); - } - else { - u3_noun gim = u3k(u3h(a)); - u3_noun hur = u3qb_reel(u3t(a), b); - - return u3n_slam_on(u3k(b), u3nc(gim, hur)); - } + u3_noun pro; + u3j_site sit_u; + u3j_gate_prep(&sit_u, b); + pro = _reel_in(&sit_u, a, u3r_at(u3x_sam_3, b)); + u3j_gate_lose(&sit_u); + return pro; } u3_noun u3wb_reel(u3_noun cor)