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

Walter Bright newshound2 at digitalmars.com
Thu Feb 27 09:30:30 UTC 2020


On 2/27/2020 12:27 AM, Petar Kirov [ZombineDev] wrote:
> 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,

Rust does not follow C syntax at all, so nobody will reasonably expect it to 
have C semantics. D does follow it, it's a feature, so people will have 
expectations.

> while if D decided to be different than all other 
> languages w.r.t. string interpolation,

You can make it behave like all those other languages simply with:

     f(format("hello $a"));

and there it is. But having it generate a GC allocated string is not so easy to 
unwind, i.e. it'll be useless with printf and generate unacceptable garbage with 
writefln. The extra string will always make it slow. Essentially, it'll be 
crippled. Making D behave like a scripting language will yield scripting 
performance.

D is a language built up from simple, orthogonal parts (or at least that is a 
goal). A language built from larger indivisible parts is much, much less 
user-adaptable. An example of this is the built-in associative array, which has 
a series of fairly intractable problems as a result. Another example is the 
built-in complex type in D, which turned out to be a bad idea - a much better 
one is building it as a library type.


More information about the Digitalmars-d-announce mailing list