The state of string interpolation

Mike Franklin slavo5150 at yahoo.com
Fri Dec 7 05:44:58 UTC 2018


On Friday, 7 December 2018 at 03:29:11 UTC, Steven Schveighoffer 
wrote:

> As long as there is an insistence that 'if it's doable in the 
> library, the elegance is not worth the effort,' any proposal 
> will fail. We need to first convince those in charge think the 
> feature should be added because of the *human* impact. That was 
> the point of my longer answer.

Understood.  In Jonathan's PR Andrei challenged the merit of a 
language string interpolation feature because a library solution 
already existed, and it wasn't being heavily utilized.  I think 
that overlooks the fact that perhaps the reason the library 
solution is not heavily utilized is because its syntax is not 
very elegant.  But I think he also simply wanted the potential of 
a library solution to be thoroughly investigated.  That is what 
is supposed to happen in the DIP process.

I still think there could be some general, broadly useful 
features to add or limitations to remove so we could build 
something like this without having to justify it to anyone.

>> Jacob mentioned AST macros (I knew that was coming, and even 
>> had a note in my first draft say "Sorry, Jacob, except for AST 
>> macros", but I deleted it :D ).  But Jacob is on to something. 
>> We already pass around symbols with `alias`.  Can that be 
>> extended somehow to pass around expressions too (i.e. 
>> expressions as rvalues)?  That would probably help address the 
>> issue of printing assert expressions as well 
>> (https://github.com/dlang/dmd/pull/8517)
>
> I think we can't exactly pass around expressions in the general 
> case, because it's too fraught with ambiguity.

[..]

> However, if I had to give it a name (and syntax), I'd say it's 
> a lazy alias.

Yep, that's one of the features I had in mind.  We already have 
it at runtime; would be nice to have feature parity at 
compile-time.  Maybe it wouldn't do anything to help the problem 
at hand though.  I'll have to spend some time on it.

Mike




More information about the Digitalmars-d mailing list