diff --git a/arvo/hoon.hoon b/arvo/hoon.hoon index fd4359a82b..c73ac115e2 100644 --- a/arvo/hoon.hoon +++ b/arvo/hoon.hoon @@ -1648,21 +1648,21 @@ $(a l.a) $(a r.a) :: - +- mer :: puts b in a, sorted - ~/ %mer + +- int :: intersection + ~/ %int |* b=_a |- ^+ a ?~ b - a + ~ ?~ a - b + ~ ?. (vor n.a n.b) $(a b, b a) ?: =(n.b n.a) [n.a $(a l.a, b l.b) $(a r.a, b r.b)] ?: (hor n.b n.a) - $(a [n.a $(a l.a, b [n.b l.b ~]) r.a], b r.b) - $(a [n.a l.a $(a r.a, b [n.b ~ r.b])], b l.b) + %- uni(+< $(a l.a, b [n.b l.b ~])) $(b r.b) + %- uni(+< $(a r.a, b [n.b ~ r.b])) $(b l.b) :: +- put :: puts b in a, sorted ~/ %put @@ -1698,6 +1698,26 @@ b $(a r.a, b [n.a $(a l.a)]) :: + +- uni :: union + ~/ %uni + |* b=_a + |- ^+ a + ?~ b + a + ?~ a + b + ?: (vor n.a n.b) + ?: =(n.b n.a) + [n.b $(a l.a, b l.b) $(a r.a, b r.b)] + ?: (hor n.b n.a) + $(a [n.a $(a l.a, b [n.b l.b ~]) r.a], b r.b) + $(a [n.a l.a $(a r.a, b [n.b ~ r.b])], b l.b) + ?: =(n.a n.b) + [n.b $(b l.b, a l.a) $(b r.b, a r.a)] + ?: (hor n.a n.b) + $(b [n.b $(b l.b, a [n.a l.a ~]) r.b], a r.a) + $(b [n.b l.b $(b r.b, a [n.a ~ r.a])], a l.a) + :: +- wyt :: depth of set .+ |- ^- @ @@ -1818,28 +1838,32 @@ |* b=* !=(~ (get(+< a) b)) :: + +- int :: intersection + ~/ %int + |* b=_a + |- ^+ a + ?~ b + ~ + ?~ a + ~ + ?: (vor p.n.a p.n.b) + ?: =(p.n.b p.n.a) + [n.b $(a l.a, b l.b) $(a r.a, b r.b)] + ?: (hor p.n.b p.n.a) + %- uni(+< $(a l.a, b [n.b l.b ~])) $(b r.b) + %- uni(+< $(a r.a, b [n.b ~ r.b])) $(b l.b) + ?: =(p.n.a p.n.b) + [n.b $(b l.b, a l.a) $(b r.b, a r.a)] + ?: (hor p.n.a p.n.b) + %- uni(+< $(b l.b, a [n.a l.a ~])) $(a r.a) + %- uni(+< $(b r.b, a [n.a ~ r.a])) $(a l.a) + :: +- mar :: add with validation |* [b=_?>(?=(^ a) p.n.a) c=(unit ,_?>(?=(^ a) q.n.a))] ?~ c (del b) (put b u.c) :: - +- mer :: puts b in a, sorted - ~/ %mer - |* b=_a - |- ^+ a - ?~ b - a - ?~ a - b - ?. (vor p.n.a p.n.b) - $(a b, b a) - ?: =(p.n.b p.n.a) - [n.a $(a l.a, b l.b) $(a r.a, b r.b)] - ?: (hor p.n.b p.n.a) - $(a [n.a $(a l.a, b [n.b l.b ~]) r.a], b r.b) - $(a [n.a l.a $(a r.a, b [n.b ~ r.b])], b l.b) - :: +- put :: adds key-value pair ~/ %put |* [b=* c=*] @@ -1892,14 +1916,25 @@ b $(a r.a, b [n.a $(a l.a)]) :: - +- uni :: union, merge + +- uni :: union ~/ %uni - |= b=_a - ?~ b a - %= $ - a (~(put by a) p.n.b q.n.b) - b (~(uni by l.b) r.b) - == + |* b=_a + |- ^+ a + ?~ b + a + ?~ a + b + ?: (vor p.n.a p.n.b) + ?: =(p.n.b p.n.a) + [n.b $(a l.a, b l.b) $(a r.a, b r.b)] + ?: (hor p.n.b p.n.a) + $(a [n.a $(a l.a, b [n.b l.b ~]) r.a], b r.b) + $(a [n.a l.a $(a r.a, b [n.b ~ r.b])], b l.b) + ?: =(p.n.a p.n.b) + [n.b $(b l.b, a l.a) $(b r.b, a r.a)] + ?: (hor p.n.a p.n.b) + $(b [n.b $(b l.b, a [n.a l.a ~]) r.b], a r.a) + $(b [n.b l.b $(b r.b, a [n.a ~ r.a])], a l.a) :: +- wyt :: depth of map .+