<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class=""><div style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" class=""><div class=""><blockquote type="cite" class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div class=""><div class="" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div class="">So hard to pronounce though! Why not UniqueString? It’s not quite as explicit but close enough. </div></div></div></blockquote><div class="" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><br class=""></div><div class="" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">Wouldn’t it be confusing to use<span class="Apple-converted-space"> </span><b class="">Unique</b>String type for a string that is<span class="Apple-converted-space"> </span><b class="">*common*</b><span class="Apple-converted-space"> </span>in order to save memory?</div></div></blockquote><div class=""><br class=""></div><div class="">I would interpret it as UniqueString(foo) means “give me the unique copy of string foo”. You use a unique copy so you can use the same string in many places without wasting memory, or excess time on string compares. It’s used in many places, but there is only one. (Maybe we should call it HighlanderString? OK, not serious.)</div></div></div></blockquote><div><br class=""></div>By definition, any string that has been uniqued is unique.</div><div><br class=""></div><div>So, maybe we like “unique” or maybe we don’t. But if we like “unique”, it’s strictly better than “uniqued”.<br class=""><div><br class=""></div><blockquote type="cite" class=""><div class=""><div style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" class=""><div class=""><div class="" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">Personally, I like the AtomString proposal as it is close to the naming we are used to and addresses the issue raised (atomic has a different meaning with threading).</div><div class="" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">Also, I had never heard of interned strings before.</div></div></blockquote></div></div></blockquote><div><br class=""></div><div>AtomicString has two features:</div><div><br class=""></div><div>(1) You do comparison by pointer / object identity;</div><div><br class=""></div><div>(2) You never allocate two objects for the same sequence of characters.</div><div><br class=""></div><div>JavaScript symbols offer (1) but avoid (2):</div><div><br class=""></div><div><span class="Apple-tab-span" style="white-space:pre">  </span>let a = Symbol(“The string of the past!”);</div><div><span class="Apple-tab-span" style="white-space: pre;">        </span>let b = Symbol(“The string of the past!”);</div><div><span class="Apple-tab-span" style="white-space:pre">  </span>a == b; // false</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>a === b; // false</div><div><br class=""></div><div>Today we call (1) “UniquedStringImpl” and (1) + (2) “AtomicStringImpl”.</div><div><br class=""></div><div>If we rename (1) + (2) to “UniqueString” or “UniquedString”, we need a new name for (1) alone.</div><div><br class=""></div></div><div class=""><div class="">Geoff</div></div></body></html>