+++ title = "2o: Normalizing Containers" weight = 18 template = "doc.html" +++ ## `++jar` Mold generator. A `jar` is a `map` of `list`. Produces the mold of a map from `key` to lists of `value`. #### Accepts `key` is a `mold`, and is the type of the map key `value` is a `mold`, and is the type of items in the lists. The lists are the values in the map. #### Produces A `mold`. #### Source ```hoon ++ jar |$ [key value] (map key (list value)) ``` #### Examples ``` > `(jar @t @ud)`(malt ~[['foo' ~[1 2 3]] ['bar' ~[4 5 6]]]) {[p='bar' q=~[4 5 6]] [p='foo' q=~[1 2 3]]} ``` #### Discussion See also: [`ja`](/docs/hoon/reference/stdlib/2j#ja), [`by`](/docs/hoon/reference/stdlib/2i), [`map`](#map), [lists](/docs/hoon/reference/stdlib/2b) --- ## `++jug` Mold generator. A `jug` is a `map` of `set`. Produces the mold of a map from `key` to sets of `value`. #### Accepts `key` is a `mold`, and is the type of the map key. `value` is a `mold`, and is the type of items in the sets. The sets are the values in the map. #### Produces A `mold`. #### Source ```hoon ++ jug |$ [key value] (map key (set value)) ``` #### Examples ``` > `(jug @t @ud)`(malt ~[['foo' (silt ~[1 2 3])] ['bar' (silt ~[4 5 6])]]) {[p='bar' q={5 6 4}] [p='foo' q={1 2 3}]} ``` #### Discussion See also: [`ju`](/docs/hoon/reference/stdlib/2j#ju), [`by`](/docs/hoon/reference/stdlib/2i), [`map`](#map), [`set`](#set) --- ## `++map` Map Mold generator. A `map` is a [treap](https://en.wikipedia.org/wiki/Treap) of key-value pairs. Produces the mold of a map from `key` to `value`. #### Accepts `key` is a `mold`. `value` is a `mold`. #### Produces A `mold`. #### Source ```hoon ++ map |$ [key value] $| (tree (pair key value)) |=(a=(tree (pair)) ?:(=(~ a) & ~(apt by a))) ``` #### Examples ``` > ? *(map @t @ud) nlr([p=@t q=@ud]) {} ``` ``` > `(map @t @ud)`(malt ~[['foo' 1] ['bar' 2] ['baz' 3]]) {[p='bar' q=2] [p='baz' q=3] [p='foo' q=1]} ``` #### Discussion See also: [`by`](/docs/hoon/reference/stdlib/2i) --- ## `++qeu` Queue Mold generator. An ordered [treap](http://en.wikipedia.org/wiki/Treap) of items. Produces the mold of a queue of `item`. #### Accepts `item` is a `mold`. #### Produces A `mold`. #### Source ```hoon ++ qeu |$ [item] $| (tree item) |=(a=(tree) ?:(=(~ a) & ~(apt to a))) ``` #### Examples ``` > `(qeu @ud)`(~(gas to *(qeu @ud)) ~[1 2 3 4 5]) {5 4 3 2 1} ``` #### Discussion See also: [`+to`](/docs/hoon/reference/stdlib/2k#to) --- ## `++set` Set Mold generator. A `set` is an unordered [treap](http://en.wikipedia.org/wiki/Treap) of items. Produces the mold of a set of `item`. #### Accepts `item` is a `mold`. #### Produces A `mold`. #### Source ```hoon ++ set |$ [item] $| (tree item) |=(a=(tree) ?:(=(~ a) & ~(apt in a))) ``` #### Examples ``` > `(set @ud)`(silt ~[1 2 3 4 5]) {5 1 2 3 4} ``` #### Discussion See also: [`+in`](/docs/hoon/reference/stdlib/2h) ---