2o: Normalizing Containers

+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

++  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, +by, +map, +lists


+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

++  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, +by, +map, +set


+map

Map

Mold generator. A +map is a 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

++  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


+qeu

Queue

Mold generator. An ordered treap of items.

Produces the mold of a queue of $item.

Accepts

$item is a $mold.

Produces

A $mold.

Source

++  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


+set

Set

Mold generator. A +set is an unordered treap of items.

Produces the mold of a set of $item.

Accepts

$item is a $mold.

Produces

A $mold.

Source

++  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


Last updated