A value's kind and its extent are different axes: {10}, A1 and a bare 10 all reach a
range-typed parameter as a 1x1 container, yet Excel separates them:
VLOOKUP(10,10,1,TRUE) is #N/A while VLOOKUP(10,{10},1,TRUE) is 10, and TYPE answers
1 vs 64. The kind is what the CALLER supplied; the extent is merely its size.
The scalar kinds ARE ScalarType values — one vocabulary, so
getKindAt(i) === ScalarType.Boolean reads naturally — extended with the four kinds only an
argument can be: a reference, a non-reference array, a callable, and no argument at all. As an
argument kind, ScalarType.Null means a BLANK value.
The names and values are ours. The numeric codes Excel's TYPE function answers are a
PROJECTION of this kind (see TYPE's implementation), not the kind itself.
The KIND of one value — the total discriminator over IFunctionArguments.RawArg, and the vocabulary a RETURN declaration speaks (IFunction.IReturnType.getKind).