The state of string interpolation
Steven Schveighoffer
schveiguy at gmail.com
Thu Dec 6 16:19:12 UTC 2018
On 12/6/18 4:01 AM, Dennis wrote:
> On Thursday, 6 December 2018 at 02:14:12 UTC, Neia Neutuladh wrote:
>> However, that would also force druntime to include formatting code
>> that it currently lacks.
>
> Jonathan Marler's implementation [1] has a really nice approach of
> lowering interpolated strings to tuples. You can pass it to variadic
> functions like `writeln` or `text` and bring your own formatting /
> memory allocation schemes, giving better performance and flexibility.
>
> [1] https://github.com/dlang/dmd/pull/7988
I supported the concept[1] back when I read it from Dmitry Olshansky[2].
If I had known about the debate on the PR I would have jumped in. But I
don't have much to add. All that really dictates my views is the
experience I've had with other languages. However, none of those other
languages have the same concept that I know of -- they basically just
create a string with toString-ing the interpolations.
With the concept of lowering to a tuple, I'd love to use such a thing
for database queries.
For instance:
db.exec("UPDATE Foo SET a = ?, b = ?, c = ?, d = ? WHERE id = ?", aval,
bval, cval, dval, id);
vs.
db.exec(i"UPDATE Foo SET a = $aval, b = $bval, c = $cval, d = $dval
WHERE id = $id");
The mixin/library solution is much less approachable. What's awesome
about the language solution is that it just works without much extra
understanding and verbosity, and need for using mixins. mixins are cool,
but are best tucked away behind templates or generative functions. They
shouldn't seen much in user code. Saying we should use a library
solution for this is like saying we can replace foreach usage with a
library foreach that lowers to some for-loop and explicit delegates (or
maybe a mixin?). Yes, it could be done. No, it shouldn't be done. This
is one of those types of syntax sugar that should not be ignored.
+1000 from me, I'd love to see the PR merged, or the DIP created,
whatever needs to happen.
-Steve
[1] https://forum.dlang.org/post/odb9hk$2jqm$1@digitalmars.com
[2] https://forum.dlang.org/post/ocut06$261n$1@digitalmars.com
More information about the Digitalmars-d
mailing list