16:03
<shu>
ljharb: incubator call?
16:05
<ljharb>
I’ll be a few late, but I’m coming
16:25
<ljharb>
jschoi: "demethodize" is pretty gross imo, ftr :-p
17:01
<shu>
it sounds like a surgical procedure
19:51
<ljharb>
so, we have x?.(y), where it doesn't call x unless x is non-nullish; is there no simple way to do x(y) when y is non-nullish? (obv i can do y == null ? y : x(y) but that means i have to repeat the y expression more than once, or store it in a var)
20:01
<Ashley Claymore>
sounds like you want optional pipeline 😉
20:02
<Ashley Claymore>
y ?> x(<sigil>)
20:02
<bakkot>
optional pipeline :(
20:02
<bakkot>
we could just have do-notation, like a real language
20:03
<Ashley Claymore>
🔥
20:04
<shu>
real languages are statement based, only acceptable expressions are immediates and registers and addresses
20:04
<shu>
and immediates can't be too big
20:04
<shu>
and it'll be an awkward number of bits, like 21
20:06
<Ashley Claymore>
all logic is ternary. true/false/unknown
20:11
<jschoi>
sounds like you want optional pipeline 😉
There’s going to be a bikeshed around whether to use falsey or nullish for optional pipes. 🤔
20:12
<bakkot>
nullish is the only reasonable choice for optional pipes
20:12
<bakkot>
also I don't want optional pipes
20:12
<bakkot>
but it's the only reasonable choice if we have to have them
20:22
<jschoi>
all logic is ternary. true/false/unknown

Also, we both have null and undefined. We can go further. https://www.computer.org/csdl/proceedings-article/glsv/1991/00143992/12OmNzzxusf

Quaternary logic. We have the technology. Do we have the courage? [joke]

20:30
<bakkot>
we have gone further
20:31
<bakkot>
we have an infinite number of document.alls available to us
20:31
<bakkot>
for as many non-null/undef nullish values as you want
20:46
<TabAtkins>
There’s going to be a bikeshed around whether to use falsey or nullish for optional pipes. 🤔
? It would use the same rules as optional-call and ??; anything else would be a profound mistake.
21:59
<jschoi>
Yeah, I had thought there would be some disagreement on this, but it looks like everyone (including me) agrees with nullishness.
22:46
<TabAtkins>
I don't think it's particularly that everyone agrees on nullishness (tho maybe people do), it's just that it's extremely clear that all the things doing optionality with the same syntax pattern need to act the same.
23:39
<Michael Ficarra>
we have an infinite number of document.alls available to us
not even limited to document.all, hosts can put [[IsHTMLDDA]] on any objects they choose
23:40
<shu>
owo
23:41
<bakkot>
"can", but "should" not
23:41
<bakkot>
"implementations should not create any with the exception of document.all"
23:42
<bakkot>
should've said "must"
23:42
<ljharb>
still could
23:43
<Michael Ficarra>
^
23:43
<bakkot>
with consensus, which, I definitely do not care enough about this to spend committee time on it
23:43
<Michael Ficarra>
also, now I've noticed that there's an issue with B.3.6.3 https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-typeof
23:44
<bakkot>
what's the issue?
23:44
<Michael Ficarra>
the left column of that table should separate all language values unambiguously
23:45
<Michael Ficarra>
an object with [[IsHTMLDDA]] will always fall into two rows
23:45
<Michael Ficarra>
either it has [[Call]] or it doesn't
23:48
<Michael Ficarra>
we should just have it insert a step into 13.5.3.1 instead of a row into the table
23:53
<Michael Ficarra>
https://github.com/tc39/ecma262/issues/2685