Discussion Thread: DIP 1036--Formatted String Tuple Literals--Community Review Round 1

aliak something at something.com
Fri Sep 11 09:01:31 UTC 2020

On Thursday, 10 September 2020 at 20:50:24 UTC, Paul Backus wrote:
> On Thursday, 10 September 2020 at 18:45:02 UTC, Steven 
> Schveighoffer wrote:
>> I disagree completely. This DIP is on the right track. And I'm 
>> happy to "waste time" if it means it gets a fair shake at 
>> inclusion. It costs me nothing to have it be judged.
> Fair enough--that's your judgement call to make.
>>> I understand perfectly. My criticism of DIP 1036 is not that 
>>> you have failed at what you set out to do, but that you have 
>>> set out to do the wrong thing to begin with.
>> How about you tell me what the right thing is?
> Sure. Here's the one-minute version of my personal vision for 
> how string interpolation should work in D:
> 1. `writeln(i"Hello $name!")` lowers to `writeln("Hello ", 
> name, "!")`.
> 2. `printf(f"Hello ${%s}name!")` lowers to `printf("Hello %s!", 
> name)`
> 3. `f"Hello $name!"` and `i"Hello ${%s}name"` are parse-time 
> errors.
> The key idea is that rather than trying to find one magical 
> solution that works for both writeln-style functions and 
> printf-style functions, we have a dedicated syntax for each.
> This won't stop people from calling functions with the wrong 
> arguments, but I don't think it needs to--that should be each 
> function's responsibility, not the language's (see: Scott 
> Meyers' Year/Month/Day example). And if we do decide to make it 
> the language's responsibility, we should do it in a way that 
> solves the problem in the general case, like pragma(printf).

How about using Atila's nogc code [0] and just having `i"Hello 
$name!" lower to `text("Hello ", name, "!")`

Works with both writeln, printf, and string assignment.

I think this whole business of making it work with format strings 
is a different feature. Especially if it is to work with sql and 
printf style formats?


More information about the Digitalmars-d mailing list