Rick Waldron (2013-05-31T15:01:48.000Z)
github at esdiscuss.org (2013-07-12T02:27:21.936Z)
On Fri, May 31, 2013 at 7:33 AM, Till Schneidereit <tschneidereit at gmail.com> wrote: > I couldn't find any precise definition for the spec term "present", so > this is not entirely clear to me. > > Example: > In step 7 of 15.4.3.21 Array.prototype.reduce, a TypeError must be thrown > if the optional argument `initialValue` isn't present. If a value of > `undefined` does *not* cause the argument to be present, that function can > be implemented with the following signature: > > `function ArrayReduce(callbackfn, initialValue = undefined)` > `undefined` is a valid initial value for Array.prototype.reduce. `undefined` will also trigger the default parameter, so this works until nothing is provided, which breaks Step 10. > > If, however, the value `undefined` means that the argument is present, the > signature should probably be: > > `function ArrayReduce(callbackfn, ...rest)` > With minor changes to steps 9 and 10, plus the addition of steps to check rest.length and then Get(rest, "0"), this would work. I suspect that Allen would prefer to craft some sort of spec mechanism, from this use case, for "is foo present" assertions throughout the spec.