There are some object types that are "compatible" in certain ways, for example:
o You can do arithmetic operations on any Numeric types, a Rat
minus and Int just works (and gives you a Rat).
o You can do set operations on any of the QuantHash types
(and some other things, like Arrays), so you can take
the set difference of a Mix and a Bag (and you'll get a Mix).
How would you know what types are compatible for a particular operation?
Is there a way to know what the resulting type is going to be?
Is there some sort of rule about using the least-specific
possible type?