on dc20522 help sign in
187 lines 3.1 kB history raw
1+++
2title = "2o: Normalizing Containers"
3weight = 18
4template = "doc.html"
5+++
7### `++jar`
9Mold generator. A `jar` is a `map` of `list`.
11#### Source
13```hoon
14 ++ jar |*([a=mold b=mold] (map a (list b)))
15```
17#### Examples
19```
20 > =a (ly [1 2 ~])
21 > a
22 ~[1 2]
24 > =b (ly [3 4 ~])
25 > b
26 ~[3 4]
28 > =c (my [[%a a] [%b b] ~])
29 > c
30 [n=[p=%b q=[i=3 t=~[4]]] l={[p=%a q=[i=1 t=[i=2 t=~]]]} r={}]
32 > (~(get ja c) %a)
33 [i=1 t=[i=2 t=~]]
35 > (~(get ja c) %c)
36 ~
37```
39#### Discussion
41See 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)
43---
44### `++jug`
46Mold generator. A `jug` is a `map` of `set`.
48#### Source
50```hoon
51 ++ jug |*([a=mold b=mold] (map a (set b)))
52```
54#### Examples
56```
57 > =a (sy [1 2 ~])
58 > a
59 [n=2 l={1} r={}]
61 > =b (sy [3 4 ~])
62 > b
63 [n=4 l={} r={3}]
65 > =c (my [%a a] [%b b] ~])
66 > c
67 [n=[p=%b q=[n=4 l={} r={3}]] l={[p=%a q=[n=2 l={1} r={}]]} r={}]
69 > (~(get ju c) %b)
70 [n=4 l=~ r=[n=3 l={} r={}]]
72 > (~(put ju c) [%b 5])
73 [ n=[p=%b q=[n=4 l=[n=5 l={} r={}] r=[n=3 l={} r={}]]]
74 l=[n=[p=%a q=[n=2 l=[n=1 l={} r={}] r=~]] l={} r={}]
75 r=~
76 ]
77```
79#### Discussion
81See also: [`ja`](@/docs/reference/library/2j.md), [`by`](@/docs/reference/library/2i.md), [`set`](@/docs/reference/library/2h.md)
83---
84### `++map`
86Map
88Mold generator. A `map` is a [treap](https://en.wikipedia.org/wiki/Treap) of
89key-value pairs.
92#### Source
94```hoon
95 ++ map |* [a=mold b=mold]
96 %+ cork (tree (pair a b))
97 |= c=(tree (pair a b)) ^+ c
98 ?.(~(apt by c) ~ c)
99```
101#### Examples
103```
104 > ? *(map @t @u)
105 nlr({p/@t q/@u})
106 {}
108 > (molt `(list (pair * *))`[[a+1 b+2] ~])
109 [n=[p=[97 1] q=[98 2]] l={} r={}]
110```
112#### Discussion
114See also: [`by`](@/docs/reference/library/2i.md)
116---
117### `++qeu`
119Queue
121Mold generator. An ordered [treap](http://en.wikipedia.org/wiki/Treap) of
122items.
124#### Source
126```hoon
127 ++ qeu |*(a=mold (tree a))
128```
131#### Examples
133```
134 > (qeu time)
135 < 1.huj
136 { *
137 < 1.zda
138 { a/<1.vyv {* <112.lqf 224.nab 54.tyv 119.veb 31.ohr 1.jmk $143>}>
139 <31.ohr 1.jmk $143>
140 }
141 >
142 }
145 > (~(gas to *(qeu time)) [~2014.1.1 ~2014.1.2 ~])
146 [n=~2014.1.2 l={} r={~2014.1.1}]
147```
149#### Discussion
151See also: [`qeu`](@/docs/reference/library/2k.md)
153---
154### `++set`
156Set
158Mold generator. A `qeu` is an ordered [treap](http://en.wikipedia.org/wiki/Treap) of
159items.
161#### Source
163```hoon
164 ++ set |* a=mold
165 %+ cork (tree a)
166 |= b=(tree a) ^+ b
167 ?.(~(apt in b) ~ b)
168```
170#### Examples
172```
173 > (sy "abc")
174 [n='b' l={'a' 'c'} r={}]
176 > (~(put in (sy "abc")) %d)
177 [n='b' l=[n='d' l={} r={'a' 'c'}] r=~]
179 > (~(put in (sy "abc")) %a)
180 [n='b' l=[n='c' l={'a'} r={}] r=~]
181```
183#### Discussion
185See also: [`in`](@/docs/reference/library/2h.md)
187---