<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div class="markdown-here-wrapper" data-md-url="" style="" markdown-here-wrapper-content-modified="true">
<p style="margin: 0px 0px 1.2em !important;">I don’t disagree.</p>
<p style="margin: 0px 0px 1.2em !important;">After some more
pondering, while text blocks and string literals clearly have a
lot of overlap - e.g. they both end up being String objects,
that’s not the case with string templates.</p>
<p style="margin: 0px 0px 1.2em !important;">So, if the following
assignment fails:</p>
<pre style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><code style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block !important;">String s = "foo \{bar}";
</code></pre>
<p style="margin: 0px 0px 1.2em !important;">One might argue that
perhaps the syntax should be “more obviously different”. <br>
</p>
<p style="margin: 0px 0px 1.2em !important;">Maurizio</p>
<p style="margin: 0px 0px 1.2em !important;">On 13/03/2024 14:48,
Archie Cobbs wrote:</p>
<p style="margin: 0px 0px 1.2em !important;"></p>
<div class="markdown-here-exclude">
<p></p>
<blockquote type="cite" cite="mid:CANSoFxtLXQ52b+LWQBhoUTz6HPjaCsy=ufnZOYeyQsgH6EwZEQ@mail.gmail.com">Consider
how we handle float vs. double literals. They overlap for
32-bit values, which is very convenient, but you can also
"force" a narrower interpretation by adding an "f" suffix.
That seems like pretty much the best of both worlds to me.<br>
<br>
So is this an analogous situation? Then we'd allow a
StringTemplate literal to have an <i>optional</i> "$" prefix:<br>
<br>
<div style="margin-left:40px"><span style="font-family:monospace">obj.takingString("abcd");
// ok - string</span></div>
<div style="margin-left:40px"><span style="font-family:monospace">obj.</span><span style="font-family:monospace">taking</span><span style="font-family:monospace">Template("abcd");
// ok - template</span><br>
<span style="font-family:monospace">obj.</span><span style="font-family:monospace">taking</span><span style="font-family:monospace">StringOrTemplate($"abcd");
// ok - template</span><br>
<span style="font-family:monospace">obj.</span><span style="font-family:monospace">taking</span><span style="font-family:monospace">StringOrTemplate("abcd");
// ok - string or template (personally I don't care)</span><br>
<span style="font-family:monospace"></span><span style="font-family:monospace">obj.</span><span style="font-family:monospace">taking</span><span style="font-family:monospace">String($"abcd");
// fail</span></div>
<div style="margin-left:40px"><span style="font-family:monospace"></span><span style="font-family:monospace">obj.</span><span style="font-family:monospace">taking</span><span style="font-family:monospace">Template($"abcd");
// ok - template</span></div>
<div style="margin-left:40px"><span style="font-family:monospace">obj.</span><span style="font-family:monospace">taking</span><span style="font-family:monospace">String("x = \{var}");
// fail</span></div>
<div style="margin-left:40px"><span style="font-family:monospace">obj.</span><span style="font-family:monospace">taking</span><span style="font-family:monospace">Template("x = \{var}");
// ok - template</span></div>
</blockquote>
<p></p>
</div>
<p style="margin: 0px 0px 1.2em !important;"></p>
<div title="MDH:PHA+SSBkb24ndCBkaXNhZ3JlZS48L3A+PHA+QWZ0ZXIgc29tZSBtb3JlIHBvbmRlcmluZywgd2hp
bGUgdGV4dCBibG9ja3MgYW5kIHN0cmluZyBsaXRlcmFscyBjbGVhcmx5IGhhdmUgYSBsb3Qgb2Yg
b3ZlcmxhcCAtIGUuZy4gdGhleSBib3RoIGVuZCB1cCBiZWluZyBTdHJpbmcgb2JqZWN0cywgdGhh
dCdzIG5vdCB0aGUgY2FzZSB3aXRoIHN0cmluZyB0ZW1wbGF0ZXMuPC9wPjxwPlNvLCBpZiB0aGUg
Zm9sbG93aW5nIGFzc2lnbm1lbnQgZmFpbHM6PGJyPjwvcD48cD5gYGA8YnI+U3RyaW5nIHMgPSAi
Zm9vIFx7YmFyfSI7PGJyPmBgYDwvcD48cD5PbmUgbWlnaHQgYXJndWUgdGhhdCBwZXJoYXBzIHRo
ZSBzeW50YXggc2hvdWxkIGJlICJtb3JlIG9idmlvdXNseSBkaWZmZXJlbnQiLjwvcD48cD5NYXVy
aXppbzxicj48L3A+PGRpdiBjbGFzcz0ibW96LWNpdGUtcHJlZml4Ij5PbiAxMy8wMy8yMDI0IDE0
OjQ4LCBBcmNoaWUgQ29iYnMgd3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIHR5cGU9ImNpdGUi
IGNpdGU9Im1pZDpDQU5Tb0Z4dExYUTUyYitMV1FCaG9VVHo2SFBqYUNzeT11Zm5aT1lleVFzZ0g2
RXdaRVFAbWFpbC5nbWFpbC5jb20iPkNvbnNpZGVyIGhvdyB3ZSBoYW5kbGUgZmxvYXQgdnMuIGRv
dWJsZSBsaXRlcmFscy4gVGhleSBvdmVybGFwIGZvciAKMzItYml0IHZhbHVlcywgd2hpY2ggaXMg
dmVyeSBjb252ZW5pZW50LCBidXQgeW91IGNhbiBhbHNvICJmb3JjZSIgYSAKbmFycm93ZXIgaW50
ZXJwcmV0YXRpb24gYnkgYWRkaW5nIGFuICJmIiBzdWZmaXguIFRoYXQgc2VlbXMgbGlrZSBwcmV0
dHkgCm11Y2ggdGhlIGJlc3Qgb2YgYm90aCB3b3JsZHMgdG8gbWUuPGJyPjxicj5TbyBpcyB0aGlz
IGFuIGFuYWxvZ291cyBzaXR1YXRpb24/IFRoZW4gd2UnZCBhbGxvdyBhIFN0cmluZ1RlbXBsYXRl
IGxpdGVyYWwgdG8gaGF2ZSBhbiA8aT5vcHRpb25hbDwvaT4gIiQiIHByZWZpeDo8YnI+PGJyPjxk
aXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjQwcHgiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTptb25v
c3BhY2UiPm9iai50YWtpbmdTdHJpbmcoImFiY2QiKTsgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IC8vIG9rIC0gc3RyaW5n
PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjQwcHgiPjxzcGFuIHN0eWxlPSJm
b250LWZhbWlseTptb25vc3BhY2UiPm9iai48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
Om1vbm9zcGFjZSI+dGFraW5nPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTptb25vc3Bh
Y2UiPlRlbXBsYXRlKCJhYmNkIik7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Ly8gb2sgLSB0ZW1wbGF0ZTwvc3Bhbj48YnI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9z
cGFjZSI+b2JqLjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlIj50YWtp
bmc8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZSI+U3RyaW5nT3JUZW1w
bGF0ZSgkImFiY2QiKTsmbmJzcDsgLy8gb2sgLSB0ZW1wbGF0ZTwvc3Bhbj48YnI+PHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZSI+b2JqLjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6bW9ub3NwYWNlIj50YWtpbmc8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Om1v
bm9zcGFjZSI+U3RyaW5nT3JUZW1wbGF0ZSgiYWJjZCIpOyAmbmJzcDsgLy8gb2sgLSBzdHJpbmcg
b3IgdGVtcGxhdGUgKHBlcnNvbmFsbHkgSSBkb24ndCBjYXJlKTwvc3Bhbj48YnI+PHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZSI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWls
eTptb25vc3BhY2UiPm9iai48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFj
ZSI+dGFraW5nPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTptb25vc3BhY2UiPlN0cmlu
ZygkImFiY2QiKTsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZuYnNwOyAvLyBm
YWlsPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjQwcHgiPjxzcGFuIHN0eWxl
PSJmb250LWZhbWlseTptb25vc3BhY2UiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6
bW9ub3NwYWNlIj5vYmouPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTptb25vc3BhY2Ui
PnRha2luZzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlIj5UZW1wbGF0
ZSgkImFiY2QiKTsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jm5ic3A7IC8vIG9rIC0gdGVt
cGxhdGU8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6NDBweCI+PHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZSI+b2JqLjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6bW9ub3NwYWNlIj50YWtpbmc8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Om1v
bm9zcGFjZSI+U3RyaW5nKCJ4ID0gXHt2YXJ9Iik7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7Jm5ic3A7IC8vIGZhaWw8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6NDBw
eCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZSI+b2JqLjwvc3Bhbj48c3BhbiBz
dHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlIj50YWtpbmc8L3NwYW4+PHNwYW4gc3R5bGU9ImZv
bnQtZmFtaWx5Om1vbm9zcGFjZSI+VGVtcGxhdGUoInggPSBce3Zhcn0iKTsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsgLy8gb2sgLSB0ZW1wbGF0ZTwvc3Bhbj48L2Rpdj48L2Jsb2NrcXVvdGU+" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0;"></div>
</div>
</body>
</html>