Kevin Smith wrote:
You're right, this implies destructuring binding forms behave in a
way that I flagged as possibly not wanted:
let {p?: {q: r}} = o;
would bind r to undefined for any o that doesn't have a p or that
does but o.p doesn't have a q.
So as Nil cascades downward, it essentially converts the whole subtree
to a "deeply" irrefutable pattern.
I would rather recast this into the expression language from the pattern
language before invoking most-holy Nil :-P.
console.log({p: {q: 42}}.p?.q);
logs 42, while
console.log({p: {s: 42}}.p?.q);
would log undefined which could be nil in disguise, or not (see my
previous post to this one).
Destructuring with the opt-in irrefutable syntax, suffix-? is my
preference, does not seem to me to involve Nil in its explanation or
semantics.
Sorry to be a stickler. I do not want to couple destructuring to exposed
Nil.
On second look this is not as bad as I thought. It would be bad if
r were not bound (so an outer r could become visible) depending on
o's dynamics. That seems right out!
Yes, let's lobbest thy holy hand grenade at that one.
:-)
/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss