and Brainf*ck seems to be not too bad at all.
But you are right. APL's empty is closer to Smalltalk's Null than Java's null. Correct me somebody, but I think Smalltalk's Null can be made to behave exactly like APL empty if so desired. E.g. 0*nil would now yeild doNotUnderstand exception, but you can handle some messages in Null and in Number to make it evaluate to nil.