Bag Container (#bag)

Bags are balanced skip list of key/value pairs. There may be more than one value for a key and there may be identifcal values for a key. Bags are like the transactions to a bank account. The account number is the key. The deposits and withdrawals are the values.

Commentary Code Result
Commentary #bag =>b;
'a1'=>['a']b;
'a1'=>['a']b;
'a2'=>['a']b;
'b1'=>['b']b;
b:seq %**$;
Seq[R2C2:K]
[1]Seq[R1C2:K]
*[1]String[R2C1:C]a
*[2]Seq[R1C3:K]
**[1]String[R2C2:C]a1
**[2]String[R2C2:C]a1
**[3]String[R2C2:C]a2
[2]Seq[R1C2:K]
*[1]String[R2C1:C]b
*[2]Seq[R1C1:K]
**[1]String[R3C2:C]b1
Commentary #bag =>b;
'a1'=>['a']b;
'a2'=>['a']b;
'b1'=>['b']b;
'a2'=>['a']b;
b['a' 'b' 'x' 'a']%**$;
Seq[R1C4:K]
[1]Seq[R1C3:K]
*[1]String[R3C2:C]a1
*[2]String[R3C2:C]a2
*[3]String[R3C2:C]a2
[2]Seq[R1C1:K]
*[1]String[R2C2:C]b1
[3]Seq[R1C1:K]
*[1]NV:
[4]Seq[R1C3:K]
*[1]String[R3C2:C]a1
*[2]String[R3C2:C]a2
*[3]String[R3C2:C]a2
Commentary #bag =>b;
'c1''c1''c1' =>['ck''ck''ck']b;
'<1>'$;(b:seq%**)$;
b ~ (('ck''c1'));
'<2>'$;(b:seq%**)$;
<1>
Seq[R2C1:K]
[1]Seq[R1C2:K]
*[1]String[R2C2:C]ck
*[2]Seq[R1C3:K]
**[1]String[R3C2:C]c1
**[2]String[R3C2:C]c1
**[3]String[R3C2:C]c1
<2>
Seq[R2C1:K]
[1]Seq[R1C2:K]
*[1]String[R2C2:C]ck
*[2]Seq[R1C2:K]
**[1]String[R3C2:C]c1
**[2]String[R3C2:C]c1
Commentary #bag =>b;
'c1''c2''c1' =>['ck'> <-*3]b;
'dv'=>['dk1''dk2']b;
'<1>'$;(b:seq%**)$;
b ~'ck';
'<2>'$;(b:seq%**)$;
<1>
Seq[R2C5:K]
[1]Seq[R1C2:K]
*[1]String[R6C2:C]ck
*[2]String[R2C2:C]c2
[2]Seq[R1C2:K]
*[1]String[R6C2:C]ck
*[2]String[R2C2:C]c1
[3]Seq[R1C2:K]
*[1]String[R6C2:C]ck
*[2]String[R2C2:C]c1
[4]Seq[R1C2:K]
*[1]String[R2C3:C]dk1
*[2]String[R5C2:C]dv
[5]Seq[R1C2:K]
*[1]String[R2C3:C]dk2
*[2]String[R5C2:C]dv
<2>
Seq[R2C2:K]
[1]Seq[R1C2:K]
*[1]String[R2C3:C]dk1
*[2]String[R5C2:C]dv
[2]Seq[R1C2:K]
*[1]String[R2C3:C]dk2
*[2]String[R5C2:C]dv
Commentary #bag =>b;
'c1''c2''c1' =>['ck'> <-*3]b;
'dv'=>['dk1''dk2']b;
'ck'=>['dk3']b;
'<1>'$;(b:seq%**)$;
b ~('dk1''dv');
b ~('dk3''ck'>);
'<2>'$;(b:seq%**)$;
<1>
Seq[R2C6:K]
[1]Seq[R1C2:K]
*[1]String[R6C2:C]ck
*[2]String[R2C2:C]c2
[2]Seq[R1C2:K]
*[1]String[R6C2:C]ck
*[2]String[R2C2:C]c1
[3]Seq[R1C2:K]
*[1]String[R6C2:C]ck
*[2]String[R2C2:C]c1
[4]Seq[R1C2:K]
*[1]String[R2C3:C]dk1
*[2]String[R4C2:C]dv
[5]Seq[R1C2:K]
*[1]String[R2C3:C]dk2
*[2]String[R4C2:C]dv
[6]Seq[R1C2:K]
*[1]String[R2C3:C]dk3
*[2]String[R3C2:C]ck
<2>
Seq[R2C4:K]
[1]Seq[R1C2:K]
*[1]String[R6C2:C]ck
*[2]String[R2C2:C]c2
[2]Seq[R1C2:K]
*[1]String[R6C2:C]ck
*[2]String[R2C2:C]c1
[3]Seq[R1C2:K]
*[1]String[R6C2:C]ck
*[2]String[R2C2:C]c1
[4]Seq[R1C2:K]
*[1]String[R2C3:C]dk2
*[2]String[R2C2:C]dv