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

Paul Backus snarwin at gmail.com
Thu Sep 10 20:50:24 UTC 2020


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).


More information about the Digitalmars-d mailing list