It's a very subtle and difficult point.
You can't model non-existence with something that exists and has a special value, no matter what it is. So "Set s=null" is emptiness, not non-existence. Strong typing means that everything you refer to HAS to exist. Set s = new HashSet() is not emptiness, because s now has an identifiable property. It's like an empty glass of water - s is the glass, not the water.
In APL, an empty array is in an intermediate area - it exists but has no properties. BY DEFINITION, size 0 = empty. So you can safely deal with emptiness because your in no danger of causing an NPE. Here's an example:
[link|http://www.csm.astate.edu/~rossa/cs3543/apl.html|http://www.csm.astat...a/cs3543/apl.html]
I have to run but will get back to this interesting topic. Please, let's bury the hatchet - IN CONRAD!