<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">On 7/29/19 7:02 PM, Lev Minkovsky
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:BL0PR11MB313906C2CCDB412EAE55E2DCC9DD0@BL0PR11MB3139.namprd11.prod.outlook.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Generator" content="Microsoft Word 15 (filtered
medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"MS Gothic";
        panose-1:2 11 6 9 7 2 5 8 2 4;}
@font-face
        {font-family:Sylfaen;
        panose-1:1 10 5 2 5 3 6 3 3 3;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"\@MS Gothic";
        panose-1:2 11 6 9 7 2 5 8 2 4;}
@font-face
        {font-family:"Nirmala UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.pl-k
        {mso-style-name:pl-k;}
span.pl-s
        {mso-style-name:pl-s;}
span.pl-pds
        {mso-style-name:pl-pds;}
span.pl-en
        {mso-style-name:pl-en;}
span.pl-c1
        {mso-style-name:pl-c1;}
span.pl-cce
        {mso-style-name:pl-cce;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1"><br>
<p class="MsoNormal" style="text-indent:.5in">First is the ↑
character (Alt-24 with NumLock on). We had a discussion a
while back with Bjarne and a few other C++ luminaries in
regards to a possible exponentiation operator. None of the
more conventional alternatives appeared to be a good
candidate, while ↑ is a symbol used for that purpose by Donald
Knuth, see
<a
href="https://en.wikipedia.org/wiki/Knuth%27s_up-arrow_notation"
moz-do-not-send="true">https://en.wikipedia.org/wiki/Knuth%27s_up-arrow_notation</a>,
and would be excellent for readability. Perhaps we can add it
at some point to the basic character set. I am not at all
worried about its absence on the keyboard, math folks will
quickly get used to Alt-24. <o:p>
</o:p></p>
<p class="MsoNormal" style="text-indent:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="text-indent:.5in">I would imagine
the right approach for this to happen is to ask ourselves:
what is are the specific characters that we wish were in the
basic character set? My initial list would be: $,@,↑,• or
<span
style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#222222;background:white">·,÷
</span>. $ is already in Microsoft basic character set, see <a
href="https://docs.microsoft.com/en-us/cpp/cpp/character-sets?view=vs-2019"
moz-do-not-send="true">
https://docs.microsoft.com/en-us/cpp/cpp/character-sets?view=vs-2019</a>,
so perhaps this would be a low-hanging fruit. The middle dot
symbol and the obelus could be used as an alternative
multiplication and division operators. Swift already has
user-defined operators; if we ever get them, it would be
awesome to have something like<o:p></o:p></p>
<p class="MsoNormal" style="text-indent:.5in"><o:p> </o:p></p>
<p class="MsoNormal"><span
style="font-size:9.5pt;font-family:Consolas;color:blue">long</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span
style="font-size:9.5pt;font-family:Consolas;color:blue">long</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">
operator ·(</span><span
style="font-size:9.5pt;font-family:Consolas;color:blue">long</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> m,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:blue">long</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> n)
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:blue">return</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> (</span><span
style="font-size:9.5pt;font-family:Consolas;color:blue">long</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span
style="font-size:9.5pt;font-family:Consolas;color:blue">long</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">)m
* (</span><span
style="font-size:9.5pt;font-family:Consolas;color:blue">long</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span
style="font-size:9.5pt;font-family:Consolas;color:blue">long</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">)n;
}</span></p>
</div>
</blockquote>
<p>Extending the basic source character set is something that is on
my mind. My first priority would be to get '@' added so that
email address can be used in portable programs :). Next up would
be '$'. These two are ubiquitous, would not be problematic in
practice (they are present in ASCII and common EBCDIC code pages),
and we could introduce digraphs for them.</p>
<p>Characters like ↑ are more problematic since they effectively
require a Unicode encoding (we could, of course, specify digraphs
for it as well). I think the battle for the first non-ASCII
character in the basic source character set will be hard (I'm not
sure I want to take it on). I can only imagine the number of
papers that will come afterward proposing new operators for all
kinds of interesting purposes! We may want to consider a core
language facility for defining new operators; that would enable
adding operators without extending the basic source character set.<br>
</p>
<blockquote type="cite"
cite="mid:BL0PR11MB313906C2CCDB412EAE55E2DCC9DD0@BL0PR11MB3139.namprd11.prod.outlook.com">
<div class="WordSection1">
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-indent:.5in">The second, far
more impactful idea would be to unicodize the entire language
and let the users use keywords in their national languages.
Programmers outside USA (surprise, surprise) often think in
their native languages and often prefer to write comments in
them. For example, I know that the SAP codebase is full of
comments in German. A source file is a specialized text, and
every language switch is a disorienting experience, especially
if these languages are not related. Algol 68 designers already
understood this and translated the language into Russian,
German, French, Bulgarian, Chinese and Japanese, including of
course the keywords. This could facilitate teaching/studying
the language as well.<o:p></o:p></p>
<div
style="mso-element:para-border-div;border:none;border-bottom:solid
windowtext 1.0pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal"
style="text-indent:.5in;border:none;padding:0in">As an
illustration, let us consider 3 variants of Hello-World,
first the canonic version with comments, second with the
same comments in Russian and third a hypothetical Hello
world/<span lang="RU">Привет</span><span lang="RU">
</span><span lang="RU">мир</span> in C++ with Russian
keywords:<o:p></o:p></p>
<p class="MsoNormal"
style="text-indent:.5in;border:none;padding:0in"><o:p> </o:p></p>
</div>
<p class="MsoNormal" style="text-indent:.5in"><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:green">//This
is needed for printf</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:gray">#include</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515"><stdio.h></span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:green">//Program
entry</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:blue">int</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">
main()<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">{<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span
style="font-size:9.5pt;font-family:Consolas;color:green">//Let's
greet the world</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
printf(</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Hello
world!\n"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">);<o:p></o:p></span></p>
<div
style="mso-element:para-border-div;border:none;border-bottom:solid
windowtext 1.0pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal"
style="text-autospace:none;border:none;padding:0in"><span
style="font-size:9.5pt;font-family:Consolas;color:black">}<o:p></o:p></span></p>
<p class="MsoNormal"
style="text-autospace:none;border:none;padding:0in"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:green">//Это
требуется для printf</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:gray">#include</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515"><stdio.h></span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:green"
lang="RU">//Вход в программу
</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:blue">int</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">main</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU">()<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU">{<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU">
</span><span
style="font-size:9.5pt;font-family:Consolas;color:green"
lang="RU">//Приветствуем мир</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU">
</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">printf</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU">(</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515"
lang="RU">"Привет мир!\</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">n</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515"
lang="RU">"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU">);<o:p></o:p></span></p>
<div
style="mso-element:para-border-div;border:none;border-bottom:solid
windowtext 1.0pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal"
style="text-autospace:none;border:none;padding:0in"><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU">}<o:p></o:p></span></p>
<p class="MsoNormal"
style="text-autospace:none;border:none;padding:0in"><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:green"
lang="RU">//Это требуется для печати</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU">#включить <стдвв.г><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:green"
lang="RU">//Вход в программу
</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU">цел главная()<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU">{<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU">
</span><span
style="font-size:9.5pt;font-family:Consolas;color:green"
lang="RU">//Приветствуем мир</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU"> печать(</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515"
lang="RU">"Привет мир!\</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">n</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515"
lang="RU">"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU">);<o:p></o:p></span></p>
<div
style="mso-element:para-border-div;border:none;border-bottom:solid
windowtext 1.0pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in"><span
style="font-size:9.5pt;font-family:Consolas;color:black">}<o:p></o:p></span></p>
<p class="MsoNormal" style="border:none;padding:0in"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span
style="font-size:9.5pt;font-family:Consolas;color:black"
lang="RU"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">I would imagine
that for most if not all of you, the third example looks
like gibberish. I can assure you that, for young future
programmers from the countries where English isn’t widely
spoken, the first Hello World looks just as gibberishly.
Some of them may even be reluctant to enter a career where
they would have to deal with pages and pages of such stuff
on a daily basis.
</span></p>
</div>
</blockquote>
I've had this though as well. The obvious down side is that it
could make sharing code more difficult. But, translation would be
relatively easy as well, so perhaps not a problem in practice. We
don't have a lot of keywords, so I'm not sure how impactful this is;
and I lack the non-native language experience to draw on. Thanks
for the Algol 68 reference; I wasn't aware of this prior experience!
<blockquote type="cite"
cite="mid:BL0PR11MB313906C2CCDB412EAE55E2DCC9DD0@BL0PR11MB3139.namprd11.prod.outlook.com">
<div class="WordSection1">
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div
style="mso-element:para-border-div;border:none;border-bottom:solid
windowtext 1.0pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in">
Finally, I wanted to show you a couple of additional
“hello-world”s. The first is valid C++ that stress-tests the
system it runs on by using English, Russian, Georgian and
Chinese words in the same sentence:<o:p></o:p></p>
<p class="MsoNormal" style="border:none;padding:0in"><o:p> </o:p></p>
</div>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:gray"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:gray">#include</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515"><stdio.h></span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">main()<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">{<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
printf(</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">u8"Hello-привет-</span><span
style="font-size:9.5pt;font-family:"Sylfaen",serif;color:#A31515">გამარჯობა</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">-</span><span
style="font-size:9.5pt;font-family:"MS
Gothic";color:#A31515">你好</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">,
world!\n"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">);<o:p></o:p></span></p>
<div
style="mso-element:para-border-div;border:none;border-bottom:solid
windowtext 1.0pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal"
style="text-autospace:none;border:none;padding:0in"><span
style="font-size:9.5pt;font-family:Consolas;color:black">}<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<div
style="mso-element:para-border-div;border:none;border-bottom:solid
windowtext 1.0pt;padding:0in 0in 1.0pt 0in">
</div>
</div>
</blockquote>
<p>Note that passing a u8 string literal to printf is mojibake
unless the execution encoding happens to be UTF-8. And, of
course, this won't compile in C++20.<br>
</p>
<blockquote type="cite"
cite="mid:BL0PR11MB313906C2CCDB412EAE55E2DCC9DD0@BL0PR11MB3139.namprd11.prod.outlook.com">
<div class="WordSection1">
<div
style="mso-element:para-border-div;border:none;border-bottom:solid
windowtext 1.0pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal"
style="text-autospace:none;border:none;padding:0in"><span
style="color:black">The second is something I put together
as a 21 century version of Hello world. Alas, only a very
small fraction of it is now well-formed.<o:p></o:p></span></p>
<p class="MsoNormal"
style="text-autospace:none;border:none;padding:0in"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:green">/*</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:green">The
first program to write is the same for all languages:</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:green">Print
the words</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:green">hello,
world</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:green">#include
<stdio.h></span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:green">int
main()</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:green">{</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:green">printf("hello,
world\n");</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:green">}</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:green">*/</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:blue">import</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">
std.ui;
</span><span
style="font-size:9.5pt;font-family:Consolas;color:green">//future
UI module</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:blue">import</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">
std.core;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:blue">int</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">
main()<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">{<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span
style="font-size:9.5pt;font-family:Consolas;color:blue">static</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">
std::map<std::language_id_t, std::u8string> hellos{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:green">//language_id_t
comes from std.ui</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"English"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Hello,
world"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },
</span><span
style="font-size:9.5pt;font-family:Consolas;color:green">//a
literal produces the right language type</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Chinese"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:"MS
Gothic";color:#A31515">你好,世界</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Hindi"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:"Nirmala
UI",sans-serif;color:#A31515">नमस्ते</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">
</span><span style="font-size:9.5pt;font-family:"Nirmala
UI",sans-serif;color:#A31515">दुनिया</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Spanish"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Hola
Mundo"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"French"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Bonjour
le monde"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Arabic"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:"Courier
New";color:#A31515">مرحبا</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">
</span><span style="font-size:9.5pt;font-family:"Courier
New";color:#A31515">بالعالم</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Bengali"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:"Nirmala
UI",sans-serif;color:#A31515">ওহে</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">
</span><span style="font-size:9.5pt;font-family:"Nirmala
UI",sans-serif;color:#A31515">বিশ্ব</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Russian"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Привет,
мир"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Portuguese"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Olá
Mundo"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Indonesian"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Halo
Dunia"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Urdu"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:"Courier
New";color:#A31515">ہیلو،</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">
</span><span style="font-size:9.5pt;font-family:"Courier
New";color:#A31515">دنیا</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"German"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Hallo
Welt"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Japanese"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:"MS
Gothic";color:#A31515">こんにちは世界</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Swahili"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Salamu,
Dunia"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Punjabi"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:"Nirmala
UI",sans-serif;color:#A31515">ਸਤਿ</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">
</span><span style="font-size:9.5pt;font-family:"Nirmala
UI",sans-serif;color:#A31515">ਸ੍ਰੀ</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">
</span><span style="font-size:9.5pt;font-family:"Nirmala
UI",sans-serif;color:#A31515">ਅਕਾਲ</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">
</span><span style="font-size:9.5pt;font-family:"Nirmala
UI",sans-serif;color:#A31515">ਦੁਨਿਆ</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Telugu"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:"Nirmala
UI",sans-serif;color:#A31515">హలో</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">,
</span><span style="font-size:9.5pt;font-family:"Nirmala
UI",sans-serif;color:#A31515">ప్రపంచం</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Javanese"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Hello,
donya"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Marathi"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:"Nirmala
UI",sans-serif;color:#A31515">हॅलो</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">,
</span><span style="font-size:9.5pt;font-family:"Nirmala
UI",sans-serif;color:#A31515">जग</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
{
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Turkish"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid,
</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"Selam
Dünya"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"> },<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
};<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span
style="font-size:9.5pt;font-family:Consolas;color:green">//More
than 75 % of the world population would be able to read and
understand its greeting.</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
std::post_notification (
</span><span
style="font-size:9.5pt;font-family:Consolas;color:green">//this
also comes from std.ui</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span
style="font-size:9.5pt;font-family:Consolas;color:green">//
if we can define variables in an if statement, why can't we
in a tertiary operator?</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
(std::optional<std::u8string> hello =
hellos[std::get_language_id()])
</span><span
style="font-size:9.5pt;font-family:Consolas;color:green">//get
the default system language</span><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
? *hello<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
: *hellos[</span><span
style="font-size:9.5pt;font-family:Consolas;color:#A31515">"English"</span><span
style="font-size:9.5pt;font-family:Consolas;color:black">lid];<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black">
);<o:p></o:p></span></p>
<div
style="mso-element:para-border-div;border:none;border-bottom:solid
windowtext 1.0pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal"
style="text-autospace:none;border:none;padding:0in"><span
style="font-size:9.5pt;font-family:Consolas;color:black">}<o:p></o:p></span></p>
<p class="MsoNormal"
style="text-autospace:none;border:none;padding:0in"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:9.5pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
</div>
</blockquote>
<p>For me, the most interesting part of this is the <tt>post_notification</tt>
interface presumably targeting a post-terminal world :)<br>
</p>
<p>Tom.<br>
</p>
<blockquote type="cite"
cite="mid:BL0PR11MB313906C2CCDB412EAE55E2DCC9DD0@BL0PR11MB3139.namprd11.prod.outlook.com">
<div class="WordSection1">
<p class="MsoNormal">Thank you –<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> Lev Minkovsky<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
SG16 Unicode mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Unicode@isocpp.open-std.org">Unicode@isocpp.open-std.org</a>
<a class="moz-txt-link-freetext" href="http://www.open-std.org/mailman/listinfo/unicode">http://www.open-std.org/mailman/listinfo/unicode</a>
</pre>
</blockquote>
<p><br>
</p>
</body>
</html>