+++ title = "2o: Normalizing Containers" weight = 18 template = "doc.html" +++ ### `++jar` Mold generator. A `jar` is a `map` of `list`. #### Source ```hoon ++ jar |*([a=mold b=mold] (map a (list b))) ``` #### Examples ``` > =a (ly [1 2 ~]) > a ~[1 2] > =b (ly [3 4 ~]) > b ~[3 4] > =c (my [[%a a] [%b b] ~]) > c [n=[p=%b q=[i=3 t=~[4]]] l={[p=%a q=[i=1 t=[i=2 t=~]]]} r={}] > (~(get ja c) %a) [i=1 t=[i=2 t=~]] > (~(get ja c) %c) ~ ``` #### Discussion See also: [`ja`](@/docs/reference/library/2j.md), [`by`](@/docs/reference/library/2i.md), [`map`](@/docs/reference/library/2i.md), [`list`](@/docs/reference/library/2b.md) --- ### `++jug` Mold generator. A `jug` is a `map` of `set`. #### Source ```hoon ++ jug |*([a=mold b=mold] (map a (set b))) ``` #### Examples ``` > =a (sy [1 2 ~]) > a [n=2 l={1} r={}] > =b (sy [3 4 ~]) > b [n=4 l={} r={3}] > =c (my [%a a] [%b b] ~]) > c [n=[p=%b q=[n=4 l={} r={3}]] l={[p=%a q=[n=2 l={1} r={}]]} r={}] > (~(get ju c) %b) [n=4 l=~ r=[n=3 l={} r={}]] > (~(put ju c) [%b 5]) [ n=[p=%b q=[n=4 l=[n=5 l={} r={}] r=[n=3 l={} r={}]]] l=[n=[p=%a q=[n=2 l=[n=1 l={} r={}] r=~]] l={} r={}] r=~ ] ``` #### Discussion See also: [`ja`](@/docs/reference/library/2j.md), [`by`](@/docs/reference/library/2i.md), [`set`](@/docs/reference/library/2h.md) --- ### `++map` Map Mold generator. A `map` is a [treap](https://en.wikipedia.org/wiki/Treap) of key-value pairs. #### Source ```hoon ++ map |* [a=mold b=mold] %+ cork (tree (pair a b)) |= c=(tree (pair a b)) ^+ c ?.(~(apt by c) ~ c) ``` #### Examples ``` > ? *(map @t @u) nlr({p/@t q/@u}) {} > (molt `(list (pair * *))`[[a+1 b+2] ~]) [n=[p=[97 1] q=[98 2]] l={} r={}] ``` #### Discussion See also: [`by`](@/docs/reference/library/2i.md) --- ### `++qeu` Queue Mold generator. An ordered [treap](http://en.wikipedia.org/wiki/Treap) of items. #### Source ```hoon ++ qeu |*(a=mold (tree a)) ``` #### Examples ``` > (qeu time) < 1.huj { * < 1.zda { a/<1.vyv {* <112.lqf 224.nab 54.tyv 119.veb 31.ohr 1.jmk $143>}> <31.ohr 1.jmk $143> } > } > (~(gas to *(qeu time)) [~2014.1.1 ~2014.1.2 ~]) [n=~2014.1.2 l={} r={~2014.1.1}] ``` #### Discussion See also: [`qeu`](@/docs/reference/library/2k.md) --- ### `++set` Set Mold generator. A `qeu` is an ordered [treap](http://en.wikipedia.org/wiki/Treap) of items. #### Source ```hoon ++ set |* a=mold %+ cork (tree a) |= b=(tree a) ^+ b ?.(~(apt in b) ~ b) ``` #### Examples ``` > (sy "abc") [n='b' l={'a' 'c'} r={}] > (~(put in (sy "abc")) %d) [n='b' l=[n='d' l={} r={'a' 'c'}] r=~] > (~(put in (sy "abc")) %a) [n='b' l=[n='c' l={'a'} r={}] r=~] ``` #### Discussion See also: [`in`](@/docs/reference/library/2h.md) ---