<div dir="ltr">Nice thoughts, Michael.<div><br></div><div>In general, it's extremely useful to programmers to have a data structure holding a finite sequence of Unicode code points. That data structure is conventionally called a string. There are certainly also other text-related data structures that are useful to implement and provide.<div><br></div><div>For a PL that will compile to Java or JavaScript, it's probably best to match their string type. Otherwise it will be necessary to convert between the two types all over the place. It's hard to imagine a string library that is so much better that it's worth the complexity of wrappers and conversions that crop up when juggling two kinds of strings.</div><div><br></div><div>Go does not have that constraint, and they went with narrow, byte-based strings. That strikes me as a good choice. Java, JavaScript, and the Microsoft foundation libraries all use wide strings, but it hasn't worked out very well in practice.</div><div><br></div><div>I expect programmers will be happy using code points as the default level of abstraction. Whether you need to look at grapheme clusters depends on the problem, and you can always do that explicitly when you need to.</div><div><br></div><div><div><div>Lex </div><div><br></div></div></div></div><div><br></div></div>