opMixin or mixin function templates with convenience operator?
aliak
something at something.com
Thu Dec 12 10:33:21 UTC 2019
So the interpolated dip thread got me thinking, and wondering if
any time there's been a proposal for an opMixin? It can possibly
be the hash tag symbol? And opMixin does what mixin does, and
mixes the code in the spot.
struct interpolator {
void opMixin!(string)() {
}
}
// globally declared interpolator
interpolator i;
--- code.d
import interpolation;
string str = i#"an ${interpolated} string";
Advantages over template mixins include that this has a return
type so it can be used to create things out of the current
context and give you something back.
auto html = json#q{ // compile error if invalid json
"hello": "${variable}",
"another: "${a + b}",
};
Another one is function mixin templates? So maybe that can be
done with eponymous mixin templates?
mixin template i(string str) {
string i() {
return str;
}
}
string s = i#"someting";
If it can't be done eponymously then how about:
mixin string s(string str)() {
// parse str
return mixin(stuff);
}
You get the hygiene with # as I believe it's not used anywhere?
And this enables string interpolation libraries that have the
syntax that any or all of the dips that are being propose have.
- ali
More information about the Digitalmars-d
mailing list