up_bot.c (802B)
1 #include "all.h" 2 3 u3_noun 4 u3qdu_bot(u3_noun a) 5 { 6 if (u3_nul == a) { 7 return u3_nul; 8 } 9 10 u3_atom hoc = u3h(a); 11 12 if (c3n == u3ud(hoc)) { 13 return u3m_bail(c3__exit); 14 } 15 else switch ( hoc ) { 16 default: 17 return u3m_bail(c3__exit); 18 19 case c3__tip: { 20 u3_noun ka, pa, va; 21 u3x_trel(u3t(a), &ka, &pa, &va); 22 23 return u3nc(u3_nul, 24 u3nq(u3k(ka), u3k(pa), u3k(u3h(va)), u3qdu_cut(a))); 25 } 26 27 case c3__bin: { 28 u3_noun ka, pa, ta; 29 u3x_trel(u3t(a), &ka, &pa, &ta); 30 31 return u3nc(u3_nul, 32 u3nq(u3k(ka), u3k(pa), u3k(u3h(u3h(ta))), u3qdu_cut(a))); 33 } 34 } 35 } 36 37 u3_noun 38 u3wdu_bot(u3_noun cor) 39 { 40 u3_noun a; 41 42 if (c3n == u3r_mean(cor, u3x_sam, &a, 0)) { 43 return u3m_bail(c3__exit); 44 } else { 45 return u3qdu_bot(a); 46 } 47 } 48 49