on b93c19b help sign in
186 lines 3.0 kB history raw
1+++
2title = "2o: Normalizing Containers"
3weight = 18
4template = "doc.html"
5+++
6### `++jar`
8Mold generator. A `jar` is a `map` of `list`.
10#### Source
12```
13 ++ jar |*([a=mold b=mold] (map a (list b)))
14```
16#### Examples
18```
19 > =a (ly [1 2 ~])
20 > a
21 ~[1 2]
23 > =b (ly [3 4 ~])
24 > b
25 ~[3 4]
27 > =c (my [[%a a] [%b b] ~])
28 > c
29 [n=[p=%b q=[i=3 t=~[4]]] l={[p=%a q=[i=1 t=[i=2 t=~]]]} r={}]
31 > (~(get ja c) %a)
32 [i=1 t=[i=2 t=~]]
34 > (~(get ja c) %c)
35 ~
36```
38#### Discussion
40See 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)
42---
43### `++jug`
45Mold generator. A `jug` is a `map` of `set`.
47#### Source
49```
50 ++ jug |*([a=mold b=mold] (map a (set b)))
51```
53#### Examples
55```
56 > =a (sy [1 2 ~])
57 > a
58 [n=2 l={1} r={}]
60 > =b (sy [3 4 ~])
61 > b
62 [n=4 l={} r={3}]
64 > =c (my [%a a] [%b b] ~])
65 > c
66 [n=[p=%b q=[n=4 l={} r={3}]] l={[p=%a q=[n=2 l={1} r={}]]} r={}]
68 > (~(get ju c) %b)
69 [n=4 l=~ r=[n=3 l={} r={}]]
71 > (~(put ju c) [%b 5])
72 [ n=[p=%b q=[n=4 l=[n=5 l={} r={}] r=[n=3 l={} r={}]]]
73 l=[n=[p=%a q=[n=2 l=[n=1 l={} r={}] r=~]] l={} r={}]
74 r=~
75 ]
76```
78#### Discussion
80See also: [`ja`](@/docs/reference/library/2j.md), [`by`](@/docs/reference/library/2i.md), [`set`](@/docs/reference/library/2h.md)
82---
83### `++map`
85Map
87Mold generator. A `map` is a [treap](https://en.wikipedia.org/wiki/Treap) of
88key-value pairs.
91#### Source
93```
94 ++ map |* [a=mold b=mold]
95 %+ cork (tree (pair a b))
96 |= c=(tree (pair a b)) ^+ c
97 ?.(~(apt by c) ~ c)
98```
100#### Examples
102```
103 > ? *(map @t @u)
104 nlr({p/@t q/@u})
105 {}
107 > (molt `(list (pair * *))`[[a+1 b+2] ~])
108 [n=[p=[97 1] q=[98 2]] l={} r={}]
109```
111#### Discussion
113See also: [`by`](@/docs/reference/library/2i.md)
115---
116### `++qeu`
118Queue
120Mold generator. An ordered [treap](http://en.wikipedia.org/wiki/Treap) of
121items.
123#### Source
125```
126 ++ qeu |*(a=mold (tree a))
127```
130#### Examples
132```
133 > (qeu time)
134 < 1.huj
135 { *
136 < 1.zda
137 { a/<1.vyv {* <112.lqf 224.nab 54.tyv 119.veb 31.ohr 1.jmk $143>}>
138 <31.ohr 1.jmk $143>
139 }
140 >
141 }
144 > (~(gas to *(qeu time)) [~2014.1.1 ~2014.1.2 ~])
145 [n=~2014.1.2 l={} r={~2014.1.1}]
146```
148#### Discussion
150See also: [`qeu`](@/docs/reference/library/2k.md)
152---
153### `++set`
155Set
157Mold generator. A `qeu` is an ordered [treap](http://en.wikipedia.org/wiki/Treap) of
158items.
160#### Source
162```
163 ++ set |* a=mold
164 %+ cork (tree a)
165 |= b=(tree a) ^+ b
166 ?.(~(apt in b) ~ b)
167```
169#### Examples
171```
172 > (sy "abc")
173 [n='b' l={'a' 'c'} r={}]
175 > (~(put in (sy "abc")) %d)
176 [n='b' l=[n='d' l={} r={'a' 'c'}] r=~]
178 > (~(put in (sy "abc")) %a)
179 [n='b' l=[n='c' l={'a'} r={}] r=~]
180```
182#### Discussion
184See also: [`in`](@/docs/reference/library/2h.md)
186---