Пример #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));
        }
      }
    }
  }
Пример #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));
        }
      }
    }
  }