DIP 1027---String Interpolation---Format Assessment

Petar Petar
Thu Feb 27 08:27:44 UTC 2020


On Thursday, 27 February 2020 at 00:20:27 UTC, Walter Bright 
wrote:
> On 2/26/2020 3:13 AM, Petar Kirov [ZombineDev] wrote:
>> In all other languages with string interpolation that I'm 
>> familiar with, `a` is not passed to the `i` parameter.
>
> All rely on a garbage collected string being generated as an 
> intermediate variable.

I'm well aware that allocation is inevitable if we want this 
behavior. My argument is that this behavior is so ubiquitous that 
not following it would be surprising to much more people, than if 
D didn't follow C's Usual Arithmetic Conversions rules. For 
example, Rust not following those conversion rules is considered 
a good thing, while if D decided to be different than all other 
languages w.r.t. string interpolation, most newcomers would 
consider this a bad thing and not elegant and innovative as we 
are aiming for.

I agree with Adam, Steven and others that string interpolation 
expression should yield a distinct type and not a tuple. By doing 
this we would be able to overload functions so they could accept 
both strings (which would cause GC allocation when the argument 
is a interpolated string), and the new distinct type, in which 
case the allocation could be avoided.


More information about the Digitalmars-d-announce mailing list