Lazy formatting

Steven Schveighoffer schveiguy at gmail.com
Mon Feb 1 15:34:20 UTC 2021


On 2/1/21 8:31 AM, Kagamin wrote:
>> This is how I would do it:
>>
>> i"Hello, ${var.withFormat!"%45s"} world";
> 
> I have a feeling recent DIPs are too detached from practice. If you read 
> feature requests, people wanted interpolated strings in order to easily 
> construct strings without tinkering. For ease of use. But the DIP's 
> design rationale ended up being "because other languages have this". As 
> design thus loses direction you end up designing an abstract silver 
> bullet of interpolated strings without regard for practical needs. But 
> we already have plenty of ways to tinker with string formatting. Who 
> asked for one more way to do it? Almost all uses of interpolated strings 
> are trivial ones i"I have ${n} apples".

I'm not sure how you read this as "cuz other langs do it": 
https://github.com/dlang/DIPs/blob/344e00ee2d6683d61ee019d5ef6c1a0646570093/DIPs/DIP1036.md#rationale

But in any case, the `withFormat` thing has nothing to do with the 
referenced DIP. That's why we're in a separate thread here.

I have wanted in the past to just have a construct that says "format 
this value", but not have to decide where it goes. In other words, a 
lazy formatting.

All of std.format expects a *destination* to put formatted data. I want 
the *source* to just be formatted data.

It's actually a lower level abstraction than what is already in 
std.format, which could be built upon such a thing. Just an idea any way 
(and of course, it's relevant for string interpolation to anyone who 
might want a one-off format difference than the default).

-Steve


More information about the Digitalmars-d mailing list