# 2o: normalizing containers ### `++jar` Tile generator. A `++jar` is a `++map` of `++list`. Source ------ ++ jar |*({a/$-(* *) b/$-(* *)} (map a (list b))) :: map of lists Examples -------- See also: `++ja`, `++by`, `++map`, `++list` > =a (limo [1 2 ~]) > a [i=1 t=[i=2 t=~]] > =b (limo [3 4 ~]) > b [i=3 t=[i=4 t=~]] > =c (mo (limo [[%a a] [%b b] ~])) > c {[p=%a q=[i=1 t=[i=2 t=~]]] [p=%b q=[i=3 t=[i=4 t=~]]]} > (~(get ja c) %a) [i=1 t=[i=2 t=~]] > (~(get ja c) %c) ~ *** ### `++jug` mold generator. A `++jug` is a `++map` of `++set`s. Source ------ ++ jug |*({a/$-(* *) b/$-(* *)} (map a (set b))) :: map of sets Examples -------- See also: `++ju`, `++by`, `++map`, `++set` > =a (sa (limo [1 2 ~])) > a {1 2} > =b (sa (limo [3 4 ~])) > b {4 3} > =c (mo (limo [[%a a] [%b b] ~])) > c {[p=%a q={1 2}] [p=%b q={4 3}]} > (~(get ju c) %b) {4 3} > (~(put ju c) [%b 5]) {[p=%a q={1 2}] [p=%b q={5 4 3}]} *** ### `++map` Map mold generator. A `++map` is a treap of key-value pairs. Source ------ ++ map |* {a/$-(* *) b/$-(* *)} :: associative tree $@($~ {n/{p/a q/b} l/(map a b) r/(map a b)}) :: Examples -------- See also: `++by` >? *(map @t @u) nlr({p/@t q/@u}) {} > (molt `(list (pair * *))`[[a+1 b+2] ~]) {[p=[97 1] q=[98 2]]} *** ### `++qeu` Queue mold generator. An ordered [treap](http://en.wikipedia.org/wiki/Treap) of items. Source ------ ++ qeu |* a/$-(* *) :: queue $@($~ {n/a l/(qeu a) r/(qeu a)}) :: Examples -------- > (qeu time) <1.qyo [* <1.sxx [a=<1.ebd [* <101.jzo 1.ypj %164>]> <101.jzo 1.ypj %164>]>]> > (~(gas to *(qeu time)) [~2014.1.1 ~2014.1.2 ~]) {~2014.1.2 ~2014.1.1} *** ### `++set` Set mold generator. A `++set` is a treap with unique values. Source ------ ++ set |* a/$-(* *) :: set $@($~ {n/a l/(set a) r/(set a)}) :: Examples -------- See also: `++in` > (sa "abc") {~~a ~~c ~~b} > (~(put in (sa "abc")) %d) {~~d ~~a ~~c ~~b} > (~(put in (sa "abc")) %a) {~~a ~~c ~~b} ***