mirror of
https://github.com/urbit/shrub.git
synced 2024-12-16 23:04:16 +03:00
Handling forks trivially; about to make them.
This commit is contained in:
parent
e529506426
commit
d52ec5125f
@ -98,3 +98,13 @@
|
|||||||
*/
|
*/
|
||||||
u3_noun
|
u3_noun
|
||||||
u3kf_frog(u3_noun yed);
|
u3kf_frog(u3_noun yed);
|
||||||
|
|
||||||
|
/* u3kf_grof(): build %fork span.
|
||||||
|
*/
|
||||||
|
u3_noun
|
||||||
|
u3kf_grof(u3_noun yed);
|
||||||
|
|
||||||
|
/* u3kfu_repo():
|
||||||
|
*/
|
||||||
|
u3_noun
|
||||||
|
u3kfu_repo(u3_noun, u3_noun);
|
||||||
|
@ -51,6 +51,20 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u3_noun
|
||||||
|
u3qf_grof(u3_noun bez)
|
||||||
|
{
|
||||||
|
return u3nc(c3__frog, u3qdi_tap(bez, u3_nul));
|
||||||
|
}
|
||||||
|
u3_noun
|
||||||
|
u3kf_grof(u3_noun bez)
|
||||||
|
{
|
||||||
|
u3_noun ret = u3qf_grof(bez);
|
||||||
|
|
||||||
|
u3z(bez);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
u3_noun
|
u3_noun
|
||||||
u3wf_frog(u3_noun cor)
|
u3wf_frog(u3_noun cor)
|
||||||
{
|
{
|
||||||
|
@ -50,6 +50,14 @@
|
|||||||
{
|
{
|
||||||
return _burn_in(van, q_sut, gil);
|
return _burn_in(van, q_sut, gil);
|
||||||
}
|
}
|
||||||
|
case c3__fork: p_sut = u3t(sut);
|
||||||
|
{
|
||||||
|
u3_noun fop = u3qfu_repo(van, sut);
|
||||||
|
u3_noun ret = _burn_in(van, fop, gil);
|
||||||
|
|
||||||
|
u3z(fop);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
case c3__frog: p_sut = u3t(sut);
|
case c3__frog: p_sut = u3t(sut);
|
||||||
{
|
{
|
||||||
return _burn_in(van, u3h(p_sut), gil);
|
return _burn_in(van, u3h(p_sut), gil);
|
||||||
|
@ -150,6 +150,14 @@
|
|||||||
u3z(foz);
|
u3z(foz);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
case c3__fork: p_sut = u3t(sut);
|
||||||
|
{
|
||||||
|
u3_noun fop = u3qfu_repo(van, sut);
|
||||||
|
u3_noun ret = _crop_dext(van, fop, ref, bix);
|
||||||
|
|
||||||
|
u3z(fop);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
case c3__frog: p_sut = u3t(sut);
|
case c3__frog: p_sut = u3t(sut);
|
||||||
{
|
{
|
||||||
return u3kf_frog(_crop_dext_frog(van, p_sut, ref, bix));
|
return u3kf_frog(_crop_dext_frog(van, p_sut, ref, bix));
|
||||||
@ -196,12 +204,12 @@
|
|||||||
{
|
{
|
||||||
return _crop_dext(van, sut, q_ref, bix);
|
return _crop_dext(van, sut, q_ref, bix);
|
||||||
}
|
}
|
||||||
case c3__fork: u3x_cell(u3t(ref), &p_ref, &q_ref);
|
case c3__fork: p_ref = u3t(ref);
|
||||||
{
|
{
|
||||||
u3_noun hin = _crop_dext(van, sut, p_ref, bix);
|
u3_noun gif = u3qfu_repo(van, ref);
|
||||||
u3_noun ret = _crop_dext(van, hin, q_ref, bix);
|
u3_noun ret = _crop_dext(van, sut, gif, bix);
|
||||||
|
|
||||||
u3z(hin);
|
u3z(gif);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
case c3__frog: p_ref = u3t(ref);
|
case c3__frog: p_ref = u3t(ref);
|
||||||
|
@ -99,20 +99,13 @@
|
|||||||
return _fish_in(van, q_sut, axe, vit);
|
return _fish_in(van, q_sut, axe, vit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case c3__fork: {
|
case c3__fork: p_sut = u3t(sut);
|
||||||
if ( (c3n == u3r_trel(sut, 0, &p_sut, &q_sut)) ) {
|
{
|
||||||
return u3m_bail(c3__fail);
|
u3_noun fop = u3qfu_repo(van, sut);
|
||||||
}
|
u3_noun ret = _fish_in(van, fop, axe, vit);
|
||||||
else {
|
|
||||||
u3_noun hed = _fish_in(van, p_sut, axe, vit);
|
|
||||||
u3_noun tal = _fish_in(van, q_sut, axe, vit);
|
|
||||||
u3_noun pro = u3qf_flor(hed, tal);
|
|
||||||
|
|
||||||
u3z(hed);
|
u3z(fop);
|
||||||
u3z(tal);
|
return ret;
|
||||||
|
|
||||||
return pro;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
case c3__frog: {
|
case c3__frog: {
|
||||||
p_sut = u3t(sut);
|
p_sut = u3t(sut);
|
||||||
|
@ -132,6 +132,14 @@
|
|||||||
u3z(vot);
|
u3z(vot);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
case c3__fork: p_sut = u3t(sut);
|
||||||
|
{
|
||||||
|
u3_noun fop = u3qfu_repo(van, sut);
|
||||||
|
u3_noun ret = _fuse_in(van, fop, ref, bix);
|
||||||
|
|
||||||
|
u3z(fop);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
case c3__frog: p_sut = u3t(sut);
|
case c3__frog: p_sut = u3t(sut);
|
||||||
{
|
{
|
||||||
return u3kf_frog(_fuse_in_frog(van, p_sut, ref, bix));
|
return u3kf_frog(_fuse_in_frog(van, p_sut, ref, bix));
|
||||||
|
@ -13,10 +13,9 @@
|
|||||||
static u3_noun
|
static u3_noun
|
||||||
_mint_bean()
|
_mint_bean()
|
||||||
{
|
{
|
||||||
return u3nq(c3__frog,
|
return u3kf_frog(u3nt(u3nq(c3__atom, 'f', u3_nul, 0),
|
||||||
u3nq(c3__atom, 'f', u3_nul, 0),
|
u3nq(c3__atom, 'f', u3_nul, 1),
|
||||||
u3nq(c3__atom, 'f', u3_nul, 1),
|
u3_nul));
|
||||||
u3_nul);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static u3_noun
|
static u3_noun
|
||||||
|
@ -24,10 +24,9 @@
|
|||||||
static u3_noun
|
static u3_noun
|
||||||
_mull_bean()
|
_mull_bean()
|
||||||
{
|
{
|
||||||
return u3nq(c3__frog,
|
return u3kf_frog(u3nt(u3nq(c3__atom, 'f', u3_nul, 0),
|
||||||
u3nq(c3__atom, 'f', u3_nul, 0),
|
u3nq(c3__atom, 'f', u3_nul, 1),
|
||||||
u3nq(c3__atom, 'f', u3_nul, 1),
|
u3_nul));
|
||||||
u3_nul);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static u3_noun
|
static u3_noun
|
||||||
|
@ -253,6 +253,14 @@
|
|||||||
return _nest_dext(van, q_sut, tel, ref, seg, reg, gil);
|
return _nest_dext(van, q_sut, tel, ref, seg, reg, gil);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case c3__fork: p_sut = u3t(sut);
|
||||||
|
{
|
||||||
|
u3_noun fop = u3qfu_repo(van, sut);
|
||||||
|
u3_noun ret = _nest_dext(van, fop, tel, ref, seg, reg, gil);
|
||||||
|
|
||||||
|
u3z(fop);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
case c3__frog: p_sut = u3t(sut);
|
case c3__frog: p_sut = u3t(sut);
|
||||||
{
|
{
|
||||||
if ( c3n == u3du(ref) ) switch ( ref ) {
|
if ( c3n == u3du(ref) ) switch ( ref ) {
|
||||||
@ -404,6 +412,14 @@
|
|||||||
return _nest_dext(van, sut, tel, q_ref, seg, reg, gil);
|
return _nest_dext(van, sut, tel, q_ref, seg, reg, gil);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case c3__fork: p_ref = u3t(ref);
|
||||||
|
{
|
||||||
|
u3_noun gif = u3qfu_repo(van, ref);
|
||||||
|
u3_noun ret = _nest_sint(van, sut, tel, gif, seg, reg, gil);
|
||||||
|
|
||||||
|
u3z(gif);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
case c3__frog: {
|
case c3__frog: {
|
||||||
p_ref = u3t(ref);
|
p_ref = u3t(ref);
|
||||||
|
|
||||||
|
@ -112,6 +112,14 @@
|
|||||||
return _peek_in(van, q_sut, way, axe, gil);
|
return _peek_in(van, q_sut, way, axe, gil);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case c3__fork: p_sut = u3t(sut);
|
||||||
|
{
|
||||||
|
u3_noun fop = u3qfu_repo(van, sut);
|
||||||
|
u3_noun ret = _peek_in(van, fop, way, axe, gil);
|
||||||
|
|
||||||
|
u3z(fop);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
case c3__frog: {
|
case c3__frog: {
|
||||||
p_sut = u3t(sut);
|
p_sut = u3t(sut);
|
||||||
|
|
||||||
|
@ -15,10 +15,9 @@
|
|||||||
static u3_noun
|
static u3_noun
|
||||||
_play_bean()
|
_play_bean()
|
||||||
{
|
{
|
||||||
return u3nq(c3__frog,
|
return u3kf_frog(u3nt(u3nq(c3__atom, 'f', u3_nul, 0),
|
||||||
u3nq(c3__atom, 'f', u3_nul, 0),
|
u3nq(c3__atom, 'f', u3_nul, 1),
|
||||||
u3nq(c3__atom, 'f', u3_nul, 1),
|
u3_nul));
|
||||||
u3_nul);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static u3_noun
|
static u3_noun
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
return u3k(q_sut);
|
return u3k(q_sut);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case c3__fork: return u3qf_grof(u3t(sut));
|
||||||
case c3__hold: {
|
case c3__hold: {
|
||||||
if ( c3n == u3r_cell(u3t(sut), &p_sut, &q_sut)) {
|
if ( c3n == u3r_cell(u3t(sut), &p_sut, &q_sut)) {
|
||||||
return u3m_bail(c3__fail);
|
return u3m_bail(c3__fail);
|
||||||
|
@ -48,6 +48,14 @@
|
|||||||
u3k(rq_sut)));
|
u3k(rq_sut)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case c3__fork: p_sut = u3t(sut);
|
||||||
|
{
|
||||||
|
u3_noun fop = u3qfu_repo(van, sut);
|
||||||
|
u3_noun ret = _cqfu_wrap(van, fop, yoz);
|
||||||
|
|
||||||
|
u3z(fop);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
case c3__frog: p_sut = u3t(sut);
|
case c3__frog: p_sut = u3t(sut);
|
||||||
{
|
{
|
||||||
return u3kf_frog(_wrap_frog(van, p_sut, yoz));
|
return u3kf_frog(_wrap_frog(van, p_sut, yoz));
|
||||||
|
Loading…
Reference in New Issue
Block a user