Example #1
0
  static u2_noun                                                  //  produce
  _mint_bake(u2_wire wir_r, 
             u2_noun van,                                         //  retain
             u2_noun sut,                                         //  retain
             u2_noun dab)                                         //  retain
  {
    if ( (u2_nul == dab) ) {
      return _0;
    }
    else {
      u2_noun n_dab, l_dab, r_dab; 
     
      u2_as_trel(dab, &n_dab, &l_dab, &r_dab);
      if ( u2_no == u2_dust(n_dab) ) {
        return u2_bl_bail(wir_r, c3__fail);
      } 
      else {
        u2_noun qn_dab = u2_t(n_dab);
        u2_noun vad;

        switch ( u2_h(qn_dab) ) {
          default: return u2_bl_bail(wir_r, c3__exit);
          case c3__ash: {
            vad = _mint_brew(wir_r, van, sut, u2_yes, u2_t(qn_dab));
            break;
          }
          case c3__elm: {
            vad = _mint_brew(wir_r, van, sut, u2_no, u2_t(qn_dab));
            break;
          }
        }

        if ( (u2_nul == l_dab) && (u2_nul == r_dab) ) {
          return vad;
        }
        else if ( (u2_nul == l_dab) ) {
          return u2_bc
            (wir_r, vad, _mint_bake(wir_r, van, sut, r_dab));
        }
        else if ( (u2_nul == r_dab) ) {
          return u2_bc
            (wir_r, vad, _mint_bake(wir_r, van, sut, l_dab));
        }
        else {
          return u2_bt
            (wir_r, vad,
                    _mint_bake(wir_r, van, sut, l_dab),
                    _mint_bake(wir_r, van, sut, r_dab));
        }
      }
    }
  }
Example #2
0
  static u3_noun
  _mint_bake(
             u3_noun van,
             u3_noun sut,
             u3_noun dab)
  {
    if ( (u3_nul == dab) ) {
      return 0;
    }
    else {
      u3_noun n_dab, l_dab, r_dab;

      u3r_trel(dab, &n_dab, &l_dab, &r_dab);
      if ( c3n == u3du(n_dab) ) {
        return u3m_bail(c3__fail);
      }
      else {
        u3_noun qn_dab = u3t(n_dab);
        u3_noun vad;

        switch ( u3h(qn_dab) ) {
          default: return u3m_bail(c3__exit);
          case c3__ash: {
            vad = _mint_brew(van, sut, c3y, u3t(qn_dab));
            break;
          }
          case c3__elm: {
            vad = _mint_brew(van, sut, c3n, u3t(qn_dab));
            break;
          }
        }

        if ( (u3_nul == l_dab) && (u3_nul == r_dab) ) {
          return vad;
        }
        else if ( (u3_nul == l_dab) ) {
          return u3nc
            (vad, _mint_bake(van, sut, r_dab));
        }
        else if ( (u3_nul == r_dab) ) {
          return u3nc
            (vad, _mint_bake(van, sut, l_dab));
        }
        else {
          return u3nt
            (vad,
                    _mint_bake(van, sut, l_dab),
                    _mint_bake(van, sut, r_dab));
        }
      }
    }
  }
Example #3
0
  static u2_noun 
  _mint_grow(u2_wire wir_r,
             u2_noun van,
             u2_noun sut,
             u2_noun gol,
             u2_atom mel,
             u2_noun ruf,
             u2_noun dab)
  {
    u2_noun dan = _mint_in(wir_r, van, sut, c3__noun, ruf);
    u2_noun p_dan = u2_h(dan);
    u2_noun q_dan = u2_t(dan);
    u2_noun toc = _mint_core
      (wir_r, u2_rx(wir_r, p_dan),
              u2_bt(wir_r, c3__gold, 
                           u2_rx(wir_r, p_dan), 
                           u2_bc(wir_r, u2_nul, u2_rx(wir_r, dab))));
    u2_noun dez = _mint_bake(wir_r, van, toc, dab);
    u2_noun zod = u2_bc(wir_r, 1, dez);
    u2_noun cot = _mint_core
      (wir_r, u2_rx(wir_r, p_dan),
              u2_bt(wir_r, mel, 
                           u2_rx(wir_r, p_dan), 
                           u2_bc(wir_r, u2_rx(wir_r, dez), 
                                        u2_rx(wir_r, dab))));
    u2_noun ret = u2_bc
      (wir_r, 
       _mint_nice(wir_r, van, gol, cot),
       j2_mby(Pt6, cons)(wir_r, zod, q_dan));

    u2_rz(wir_r, zod);
    u2_rz(wir_r, toc);
    u2_rz(wir_r, dan);

    return ret;
  }
Example #4
0
  static u3_noun
  _mint_grow(
             u3_noun van,
             u3_noun sut,
             u3_noun gol,
             u3_atom mel,
             u3_noun ruf,
             u3_noun dab)
  {
    u3_noun dan = _mint_in(van, sut, c3__noun, ruf);
    u3_noun p_dan = u3h(dan);
    u3_noun q_dan = u3t(dan);
    u3_noun toc = _mint_core
      (u3k(p_dan),
              u3nt(c3__gold,
                           u3k(p_dan),
                           u3nc(u3_nul, u3k(dab))));
    u3_noun dez = _mint_bake(van, toc, dab);
    u3_noun zod = u3nc(1, dez);
    u3_noun cot = _mint_core
      (u3k(p_dan),
              u3nt(mel,
                           u3k(p_dan),
                           u3nc(u3k(dez),
                                        u3k(dab))));
    u3_noun ret = u3nc
      (
       _mint_nice(van, gol, cot),
       u3qf_cons(zod, q_dan));

    u3z(zod);
    u3z(toc);
    u3z(dan);

    return ret;
  }