Erik Michaels-Ober wrote:
> Second, I would argue that there should be + (plus), - (minus), and &
> (ampersand) methods on hashes, that function the same way they do for arrays
> (concatenation, difference, and intersection, respectively).

Hash is a very flexible citizen, though. It plays many roles. So how 
does this come out:

{0=>1, 1=>0} - {1=>1} = ?

{0=>1, 1=>0}
# if you look at a hash as a set of pairs

{0=>0}
# if you look at this hash as another way of expressing
# the same indexed collection as the array [1,0], and use
# Array#-

{0=>1}
# if you look at a hash as a set of keys, with the value, as
# a boolean, representing membership or non-membership in the set

{0=>1, 1=>-1}
# maybe, if you look at a hash as a mathematical function

And then there are "Bags":

{1=>6} - {1=>1} == {1=>5}

-- 
       vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407