String Interpolation

ryuukk_ ryuukk.dev at gmail.com
Sun Oct 22 17:37:23 UTC 2023


On Sunday, 22 October 2023 at 12:22:00 UTC, Imperatorn wrote:
> On Sunday, 22 October 2023 at 11:32:12 UTC, Arafel wrote:
>> On 21/10/23 19:10, Walter Bright wrote:
>>> For DIP1027,
>>> 
>>> |int var = 67; auto s = format(i"whatever $var"); |
>>> 
>>> would be equivalent to:
>>> 
>>> |auto s = "whatever 67";|
>>
>> At which point it's barely an improvement overs what we can 
>> already do:
>>
>> ```
>> int var = 67; auto s = mixin(i!"whatever $var");
>> ```
>>
>> I'm not saving even one keypress, and readability isn't that 
>> much better either.
>>
>> And we'll end up with multiple string literals, like `r"` and 
>> `q"`, and then something called "interpolated string" that 
>> uses a very similar token `i"` but that can't be used as a 
>> string, not even in the most straightforward cases.
>>
>> Don't you think this will be unnecessarily confusing for users?
>>
>> That's why I prefer DIP1036 over DIP1027, or even YAIDIP.
>>
>> I understand that you don't want to make it implicitly 
>> convertible to strings. Fair enough, I'm sure there are solid 
>> reasons for that. But please, in that case, don't call it a 
>> "string", and also don't give it a string-like syntax.
>>
>> Perhaps "interpolated sequence" with a clearly differentiated 
>> syntax? That would describe the feature much better.
>
> Agreed, it's misleading. In almost all languages in existence 
> it is implied that you want a string. It's about ergonomics. It 
> should be clearly stated that you do *not* get a string and 
> have to do that yourself, or more convenient ways should be 
> added to do what you want in 99% of cases.

Buddy, not every language should be a Java-like language, stop 
expecting that your usecase should be enforced to everyone


More information about the Digitalmars-d mailing list