I want to add a Phobos module with template mixins for common idioms.
Idan Arye
GenericNPC at gmail.com
Mon May 6 14:13:00 PDT 2013
On Monday, 6 May 2013 at 19:47:33 UTC, Diggory wrote:
> It's a nice idea but personally I don't like the syntax much,
> for example it's completely non-obvious what "true" does when
> passed to the singleton mixin, or that the parameters to the
> property mixin are "type, name, condition, initial value".
>
> I suppose you could do something like this:
> mixin property!`int x = 1`;
>
> The other problem is that I don't think it's beneficial to
> invite the use of mixins for such simple substitutions. I'd
> rather see the majority of code be standard D syntax, and the
> use of mixins be the exception rather than the rule. It's
> similar to how excessive use of macros in C++ is generally
> considered bad practice.
If D supported Java's annotation metaprogramming I could have
implemented a syntax like:
@Property(`a < 50`) int a = 1;
since it doesn't, I have to use mixin templates...
(Declaimer: I do not want to imply here that Java is a good
language. Java is a terrible language. Annotation metaprogramming
is it's only redeeming feature, and even that feature is far too
complex for common use...)
Anyways, I'll have to add a new trait template to extract the
name from the declaration(Compile time regex are too slow), but I
think I can pull off the style you suggest. However, we still
need an extra template argument for the verifier, something like
this:
mixin propertyVerified!(`int x = 1`, `a < 50`);
Is this readable enough?
More information about the Digitalmars-d
mailing list