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" or "impossible to deny [a value for this identifier binding]". Rick
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

