On Aug 9, 2013, at 3:32 PM, Rick Waldron <[email protected]> wrote:
> On Fri, Aug 9, 2013 at 5:54 PM, Axel Rauschmayer <[email protected]> wrote: >> AFAICT, there is no current consensus on whether destructuring assignment is >> refutable by default or not: >> https://github.com/rwldrn/tc39-notes/blob/master/es6/2013-07/july-23.md#44-consider-deferring-es6-refutable-matching >> >> Could we make destructuring assignment fail soft and introduce a marker for >> refutable parts of a pattern (e.g. a prefix `!`): >> >> let { !a: foo, b: bar } = { a: 1 }; // ok: foo = 1, b = undefined >> let { !a: foo, b: bar } = { }; // exception >> >> This would have one advantage: It would be possible to bring this operator >> to parameter declarations (allowing one to declaratively specify a minimum >> arity). Then destructuring assignment and parameter handling would work very >> similarly. >> >> function bla(!mandatoryArg, optionalArg1, optionalArg2 = 123) { >> ... >> } > > > While I agree this is interesting and should be explored further, I reject > the proposal to add more meaning to the "!" character. Given this proposal, > "!" would sometimes mean "not" or "negate" (as in it's current form) and > sometimes mean "a required thing". Meanwhile, "refute" is a synonym for > "negate", which is the opposite of what you're claiming the semantics would > be, ie. irrefutable, "impossible to omit" No. > or "impossible to deny [a value for this identifier binding]". No, refutable is what Axel means. He wants matching, so a failure or refutation to cause fall through to next match. What we have in JS now with o.p and in ES6 with let {p} = o; is irrefutable -- no way to mismatch, if the property is missing you get undefined. So ! Is not too far off the mark. Recall that the late proposal was to unify patterns used now in destructuring and later in matching by requiring ? for irrefutability and making lack of ? mean "refutable". /be > > > Rick > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

