|% ++ trie |$ [key-t val-t] [val=(unit val-t) kid=(map key-t (trie key-t val-t))] -- :: =| a=(trie * *) =* val-t ?>(?=(^ val.a) val.a) |@ ++ put |* [b=(list *) c=*] => .(b (homo b)) |- ^+ a ?~ b a(val `c) =/ son (~(gut by kid.a) i.b [~ ~]) a(kid (~(put by kid.a) i.b $(a son, b t.b))) :: ++ get |* b=(list *) => .(b (homo b)) |- ?~ b [~ val.a] =/ son (~(get by kid.a) i.b) ?~ son [b val.a] $(a u.son, b t.b) --