"Empty" is a lot like XBase's "empty" :-) You don't have to worry about whether it is a string or number. You can later change the "type" for example, and not worry about code not working. Also, some databases don't have null number defaults (by vendor or DBA decision), but initialize to zero. Thus, it also makes it more DB vendor agnostic. IOW, "maintenance friendly". I like it.

Regardless, I think accepting only variables and NOT functions nor constants is just plain dumb! (for all the "language constructs", not just "empty".)