On Wednesday, 19 April 2017 at 00:08:19 UTC, Walter Bright wrote:
There are additional problems, such as:
$"{a} in %s {b}"
% should be escaped: "%s in %%s %s". There would be no use for a
single % otherwise.
and positional parameters:
$"{a} in {0}"
That would be literal 0: `"%s in %s", a, 0`. Could be disallowed
but maybe not important.
Presumably braces would be escaped $"\{ \}" -> "{ }". Also having
no {code} block in an interpolated string should be an error.
I like the simplicity of the lowering but it doesn't have much
advantage over text(a, " in ", b), you still have to import a
function. I suppose the advantage is readability for longer
strings.
Also, there are compile-time tricks to make formatting more
efficient with a compile time format string - e.g. format!"%s in
%s"(true, null). Here format can know the length of the resulting
string. With your lowering format can't receive the format string
as a compile-time argument.