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

Reply via email to