⍝ Multisets (bags): 1 2 3 3 1 2 3 ~bags 3 1 3 ⍝ multiset asymmetric difference (MAD). 2 1 2 3 1 1 1 2 2 3 ('§'bags) 1 2 2 3 3 3 ⍝ multiset symmetric difference (MSD). 1 1 3 3 1 2 3 3 1 2 3 ⍳bags 3 1 3 ⍝ progressive dyadic iota (PDI) 3 1 4 3 1 3 ∊bags 3 1 1 2 ⍝ progressive dyadic epsilon (PDE) 1 1 0 (⊂1 2 2)≡bags¨(1 2)(2 2 1)(1 1 2) ⍝ match 0 1 0 (⊂1 2 2)≢bags¨(1 2)(2 2 1)(1 1 2) ⍝ natch 1 0 1 1 2 2 3 ∪bags 2 3 3 ⍝ union 1 2 2 3 3 ∪bags 1 1 2 2 ⍝ unique is a no-op 1 1 2 2 1 2 2 3 ∩bags 2 3 3 2 ⍝ intersection 2 2 3 'tick' 'tock' ≡bags 'tock' 'tick' ⍝ nested args. 1 A←?10/5 ⋄ B←?10/5 ⋄ 1 ⍝ vectors with repeated items. 1 (A ∪bags B) ≡bags B ∪bags A ⍝ multiset-union is commutative. 1 (A ∩bags B) ≡bags B ∩bags A ⍝ multiset-intersection is commutative. 1 (⍳⍴A) ≡ A ⍳bags A ⍝ progressive dyadic iota. 1 (A ('§'bags) B) ≡bags B ('§'bags) A ⍝ MSD is commutative. 1 (2≡bags 2)(2≢bags 2)(2~bags 2)(2('§'bags)2)(2∪bags 2)(2∩bags 2)(2∊bags 2) ┌─┬─┬┬┬─┬─┬─┐ │1│0│││2│2│1│ └─┴─┴┴┴─┴─┴─┘ ⍝ Errors ⍕bags 1 2 2 3 16::NONCE ERROR ~bags 1 2 2 3 16::NONCE ERROR {⍵ ⍵}bags 1 2 2 3 16::NONCE ERROR 1 2 3 ,bags 3 2 1 16::NONCE ERROR 2 ⍳bags 3 4 4::RANK ERROR ⍝∇ bags Back to: code Back to: Workspaces