On Sunday, 16 April 2017 at 16:10:15 UTC, Nick Sabalausky (Abscissa) wrote:
On 04/15/2017 04:35 PM, crimaniak wrote:
On Saturday, 15 April 2017 at 20:04:13 UTC, Jonas Drewsen wrote:
The compiler will basically lower the $"..." string to a mixin that
concatenates
the expression parts of the (inside the {}) and the plain text parts.
It's easy implementable as a library (see
https://github.com/Abscissa/scriptlike#string-interpolation) so it does not seem like a good idea to modify the language, only to change
interp!"" to $"".

Yea, and note, I'm still open to the idea of better names than "interp". I'm still not entirely happy with that name. I'm even half-tempted to use "_".

The only one problem I've found with doing it in library though: Far as I could tell, it seems to require the caller uses string mixins, which makes actually using it a little uglier and more verbose than I would like.

I was trying to get it shorter:
// From
// Output: The number 21 doubled is 42!
int num = 21;
writeln( mixin(interp!"The number ${num} doubled is ${num * 2}!") );

defining a new method exho! (derived from echo + mixin...:-)

  auto exho(string x)(){
     return mixin("writeln("~interp!x~")");}

You can just write:

   exho!"The number ${num} doubled is ${num * 2}!"

This now looks more like "normal" scripting than

writeln( mixin(interp!"The number ${num} doubled is ${num * 2}!") );

Maybe I'm overlooking something obvious, but I haven't been able to find a way to change it to either a template mixin or even just a plain template without sacrificing to whole point of interpolated strings: specifying the arguments 100% inline.

What I think would be ideal is a language enhancement to allow "interp" to do its job without the extra syntactical noise. That would not only give us good interpolates strings, but would likely have other applications as well.

I am not against the idea making string interpolations part of the language, in vibe.d diet templates the extrapolation is marked with #{var}, the ruby style, I like this too.
At the beginning I thought this is already part of d.

Regards mt.

Reply via email to