00:51
<bakkot>
a large majority of RequireObjectCoercible calls are in String.prototype methods, as 1. Let O be ? RequireObjectCoercible(this value).
00:51
<bakkot>
why did we design strings to be subclassed
00:53
<bakkot>
class Foo extends String {} <- code written by the totally deranged
02:30
<Michael Ficarra>
blame the Smalltalk contingent (Allen)
06:28
<ljharb>
is it to be subclassed, or to be .called?
17:02
<shu>
beyond deranged
17:24
<ljharb>
yall really all prefer the string munging over a nice list?? i'm very surprised
17:32
<bakkot>
strings are lists
17:34
<Michael Ficarra>
yep and they have nice shorthands
17:34
<Michael Ficarra>
like "I am a string"
17:34
<Michael Ficarra>
and the string-concatenation of
17:36
<bakkot>
we do also have the list-concatenation of
17:57
<shu>
lists aren't nice
17:57
<shu>
I see a list and all I see are cache misses
17:57
<shu>
why is my Chromebook auto capitalizing wtf
19:42
<ljharb>
lol "strings are lists" is such a non-JS mental model, oh well
20:24
<Michael Ficarra>
The String type is the set of all ordered sequences of zero or more 16-bit unsigned integer values (“elements”) up to a maximum length of 2**53 - 1 elements.
20:24
<Michael Ficarra>
sounds pretty listy to me
20:57
<ljharb>

seems like

Let _toEscape_ be StringToCodePoints(_punctuators_).
If _toEscape_ contains _c_ or _c_ is matched by |WhiteSpace|, then

seems like i can just skip the to code points step, since _punctuators_ contains _c_ should be fine if punctuators is a string?

21:01
<bakkot>
no, since _c_ is a code point and a string is a list of code units
21:10
<ljharb>
ah, right, ok thanks