Discussion Thread: DIP 1036--Formatted String Tuple Literals--Community Review Round 1
Adam D. Ruppe
destructionator at gmail.com
Mon Sep 14 02:54:35 UTC 2020
On Sunday, 13 September 2020 at 09:40:34 UTC, claptrap wrote:
> Maybe the problem isnot enough exploratory work is done up
> front?
Various forms of this have come up over the years.
A PR in 2017 offered just the basics done automatically:
https://github.com/dlang/dmd/pull/6703
This kind of thing is perhaps the most obvious - just have the
compiler rewrite it for you. Very limited, though, it only really
works for the one use case. Been discussed several times before
this too, but never went anywhere.
This one in 2018 though opened up some new ideas, from Jonathan
Marler:
https://github.com/dlang/dmd/pull/7988
The key innovation there was instead of calling a function, it
just built an argument list. This is when these proposals
actually started getting interesting to me: it makes it usable in
a lot more cases, though the cost is it isn't as convenient. It
is very simple though.
As you can see though, it got a great many comments and even a
DIP draft <https://github.com/dlang/DIPs/pull/140/files>. In
2019, Walter started thinking in terms of printf, and this
eventually led to his DIP 1027, which had the compiler build a
string and reorder the arguments for you. It is still a parameter
list you just pass to another function, but it is partially
cooked. This adds to the complexity but opened up more
possibilities.
That's an interesting innovation too, but his DIP had a number of
flaws and missed potential which this new DIP aims to patch. The
major innovation here is adding a new type to the tuple.
Over the last couple days, we've had some new ideas came up and I
considered what we could do with them.
Of course, there's a lot of other languages with things too, C#
and Javascript both have quite interesting offerings, if you
haven't looked at them, you should. The links are in the OP's
references.
Anyway, meanwhile, Steven went back to the old ideas. So instead
of adding new stuff, he shattered it and picked up just the
pieces that survived. And what we're looking at now just takes
the best one feature from each generation and puts it together.
Convenience of gen one, flexibility of gen two, power of gen
three. Without the rest of the accumulated cruft.
At first, I pushed back at him saying various use cases wouldn't
work... but turns out they do. Much of the other stuff genuinely
wasn't necessary. So we wrote the first several drafts and now
are in the editing process to pare it back down.
> IE. Maybe have 4 or 5 people come up with as many solutions as
> possible, literally just write down ideas as they come to you.
> And then bring them all together and evaluate them. It's
> usually the outlier ideas that can spur people to "think
> differently" about the problem even if those outliers dont end
> up going anywhere.
Indeed, I often "think out loud" in these thread. Most of it goes
nowhere... but every so often some piece of it endures. If we
just instantly shot everything down instantly, we'd flush the
gold with the dirt.
More information about the Digitalmars-d
mailing list