PeterBartholomew1 , in general function shall know how to pass arguments to parameters, it shall be some logic for that. I know 3 ways
- named arguments. That's not our case, they are not used here.
- based on order of arguments. When optional arguments are at the end of the arguments list, if they are omitted nothing is passed to parameter and default value is used.
- based on argument type. Perhaps that is used in VSTACK() and perhaps that was assumed in REDUCE(). For them if first argument is not a scalar type it considered as omitted and default value is taken for the parameter.
Yes, lambdas, as well as some other functions, e.g. =XMATCH(,range), from very beginning support missed arguments having blank as the default value for the parameter (which is transformed to zero or empty string depends on type). But that's not exactly the same as optional argument.