Short list with things to finish for D2
aarti_pl
aarti at interia.pl
Thu Nov 19 11:08:01 PST 2009
aarti_pl pisze:
> Andrei Alexandrescu pisze:
>> 2. User-defined operators must be revamped. Fortunately Don already
>> put in an important piece of functionality (opDollar). What we're
>> looking at is a two-pronged attack motivated by Don's proposal:
>>
>> http://prowiki.org/wiki4d/wiki.cgi?LanguageDevel/DIPs/DIP7
>>
>> The two prongs are:
>>
>> * Encode operators by compile-time strings. For example, instead of
>> the plethora of opAdd, opMul, ..., we'd have this:
>>
>> T opBinary(string op)(T rhs) { ... }
>>
>> The string is "+", "*", etc. We need to design what happens with
>> read-modify-write operators like "+=" (should they be dispatch to a
>> different function? etc.) and also what happens with index-and-modify
>> operators like "[]=", "[]+=" etc. Should we go with proxies? Absorb
>> them in opBinary? Define another dedicated method? etc.
>>
>> * Loop fusion that generalizes array-wise operations. This idea of
>> Walter is, I think, very good because it generalizes and democratizes
>> "magic". The idea is that, if you do
>>
>> a = b + c;
>>
>> and b + c does not make sense but b and c are ranges for which a.front
>> = b.front + c.front does make sense, to automatically add the
>> iteration paraphernalia.
>>
(..)
>> Andrei
>
> I kinda like this proposal. But I would rather call template like below:
>
> T opInfix(string op)(T rhs) { ... }
> T opPrefix(string op)(T rhs) { ... }
> T opPostfix(string op)(T rhs) { ... }
>
> and allow user to define her own operators (though it doesn't have to be
> done now).
>
> I know that quite a few people here doesn't like to allow users to
> define their own operators, because it might obfuscate code. But it
> doesn't have to be like this. Someone here already mentioned here that
> it is not real problem for programs in C++. Good libraries don't abuse
> this functionality.
>
> User defined operators would allow easy definition of Domain Specific
> Languages in D. I was already writing about it some time ago:
>
> http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=81026
>
> http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=81352
>
>
> BR
> Marcin Kuszczak
> (aarti_pl)
Of course for opPrefix/opPostfix signatures will be different:
T opPrefix(string op)() { ... }
T opPostfix(string op)() { ... }
Sorry for mistake.
BR
Marcin Kuszczak
(aarti_pl)
More information about the Digitalmars-d
mailing list