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?
[0]:
https://github.com/atilaneves/nogc/blob/master/source/nogc/conv.d
More information about the Digitalmars-d
mailing list