Esempio n. 1
0
u4_tool
_lily_hike(u4_plow p,
           u4_axis axe,
           u4_list vix)  /* (axis tool) */
{
  u4_lane lan = p->lan;

  if ( u4_n_zero(vix) ) {
    return u4_kc(lan, u4_nock_frag, axe);
  }
  else {
    u4_list log_tool    = _lily_hike_belt_root(lan, vix);
    u4_list belt_l  = _lily_hike_belt_l(lan, vix);
    u4_list belt_r  = _lily_hike_belt_r(lan, vix);

    if ( !u4_n_zero(log_tool) ) {
      return u4_ch(log_tool);
    }
    else {
      u4_tool tool_l, tool_r;
      
      tool_l = _lily_hike(p, _lily_hike_axis_l(lan, axe), belt_l);
      tool_r = _lily_hike(p, _lily_hike_axis_r(lan, axe), belt_r);

      return _lily_cons(p, tool_l, tool_r);
    }
  }
}
  /* _lily_hike_belt_r(): factor (pac) right.
  */
  static u2_list                                                  //  transfer
  _lily_hike_belt_r(u2_ray  wir_r,
                    u2_list pac)                                  //  retain
  {
    if ( (u2_nul == pac) ) {
      return u2_nul;
    }
    else {
      u2_axis axis       = u2_h(u2_h(pac));
      u2_tool tool       = u2_t(u2_h(pac));
      u2_list belt_r = _lily_hike_belt_r(wir_r, u2_t(pac));

      {
        if ( (_1 != axis) &&
             (u2_yes == u2_sing(_3, j2_mbc(Pt3, cap)(wir_r, axis))) )
        {
          u2_axis axis_tap = j2_mbc(Pt3, mas)(wir_r, axis);

          return u2_bc(wir_r,
                       u2_bc(wir_r, u2_rx(wir_r, axis_tap),
                                    u2_rx(wir_r, tool)),
                       belt_r);
        }
        else return belt_r;
      }
    }
  }
Esempio n. 3
0
  /* _lily_hike_belt_r(): factor (vix) right.
  */
  static u4_log
  _lily_hike_belt_r(u4_lane lan,
                    u4_list vix)
  {
    if ( u4_n_zero(vix) ) {
      return u4_nul;
    }
    else {
      u4_axis axis       = u4_ch(u4_ch(vix));
      u4_tool tool       = u4_ct(u4_ch(vix));
      u4_list belt_r = _lily_hike_belt_r(lan, u4_ct(vix));
      {
        if ( u4_n_eq(u4_axis_3, u4_op_tip(axis)) ) {
          u4_axis axis_tap = u4_op_tap(lan, axis);

          return u4_kc(lan, u4_kc(lan, axis_tap, tool), belt_r);
        }
        else return belt_r;
      }
    }
  }
/* functions
*/
  u2_noun                                                         //  transfer
  j2_mby(Pt6, hike)(u2_wire wir_r,
                    u2_noun axe,                                  //  retain
                    u2_noun pac)                                  //  retain
  {
    if ( (u2_nul == pac) ) {
      return u2_bc(wir_r, u2_nock_0, u2_rx(wir_r, axe));
    }
    else {
      u2_noun zet = _lily_hike_belt_root(wir_r, pac);

      if ( u2_nul != zet ) {
        u2_noun fol = u2_rx(wir_r, u2_h(zet));

        u2_rl_lose(wir_r, zet);
        return fol;
      }
      else {
        u2_noun tum = _lily_hike_belt_l(wir_r, pac);
        u2_noun gam = _lily_hike_belt_r(wir_r, pac);
        u2_noun hax = j2_mbc(Pt3, peg)(wir_r, axe, 2);
        u2_noun moz = j2_mbc(Pt3, peg)(wir_r, axe, 3);
        u2_noun zip = j2_mby(Pt6, hike)(wir_r, hax, tum);
        u2_noun dof = j2_mby(Pt6, hike)(wir_r, moz, gam);
        u2_noun fol = j2_mby(Pt6, cons)(wir_r, zip, dof);

        u2_rl_lose(wir_r, tum);
        u2_rl_lose(wir_r, gam);
        u2_rl_lose(wir_r, hax);
        u2_rl_lose(wir_r, moz);
        u2_rl_lose(wir_r, zip);
        u2_rl_lose(wir_r, dof);

        return fol;
      }
    }
  }