I will try to elaborate on what I meant in my previous statement.
The concept I am referring to is the absence of a value, I'm not using concept to talk about something discussed in the manual or defined by lua necessarily. Just an abstract idea.
I did not intend the phrase "intangible second class value" to be read as hyperbole, perhaps I owe an explanation to my wording.
Let's look at a very simple function declaration:
function f(x)
return x
end
If I call it f() what is x? The answer is nil, but this is the same when we call f(nil). When we are just considering a pure lua function there is no way to know how f was called. There is no lua value to represent the difference. This to me satifies the definition "unable to be touched; not having physical presence." (intangible). Second class because we have to go through the process of using select with a vararg.
It is not good enough just to say that missing arguments are nil.
I do agree with you here, I was simply suggesting that removing this "missing", such that we couldn't use a roundabout method to check, would be more in line with lua's design as a whole.
I would be in favour of a value in lua to distinguish the two cases and not actually removing it though. Either way a proper mechanism or none at all is what I think is needed.