Any chance to call Tango as Extended Standard Library
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Sun Jan 18 08:28:11 PST 2009
Denis Koroskin wrote:
> On Sun, 18 Jan 2009 18:21:55 +0300, Andrei Alexandrescu
> <SeeWebsiteForEmail at erdani.org> wrote:
>
>> Lars Ivar Igesund wrote:
>>> Andrei Alexandrescu wrote:
>>>
>>>> For example, I'm not sure how code in std.algorithm could help
>>>> containers or streams in Tango (as it should), or how to reconcile
>>>> std.algorithm with std.core.array.
>>> If the language (D2++) will have a new way of iteration and ranges
>>> known and enforced by the compiler, then I expect Tango to support
>>> those at some point, and std.algorithm would presumably just work.
>>> However, if it is based on some interface, ad hoc (these methods must
>>> be present) or properly via an interface Range { }, I would expect
>>> Tango developers to be involved in the process of defining those
>>> interfaces (if Tango is meant to use/know about them). Since I have
>>> seen neither, it is somewhat difficult to make a well informed
>>> comment on the subject.
>>
>> It's been there for a while now (since 25 Nov 2008).
>>
>> http://www.digitalmars.com/d/2.0/statement.html#ForeachStatement
>>
>> Scroll down to "Foreach over Structs and Classes with Ranges". The
>> changelog reflects that too:
>>
>> http://www.digitalmars.com/d/2.0/changelog.html
>>
>> Version 2.021 mentions "Added range support to foreach statement."
>>
>>
>> Andrei
>
> There is a typo in docs
> (http://www.digitalmars.com/d/2.0/statement.html#ForeachStatement):
>
> Foreach Range Properties:
> .rear return the rightmost element of the range
>
> ...
>
> for (auto __r = range; !__r.empty; __r.retreat)
> { auto e = __r.tail; //<- tail or rear?
> ...
> }
>
Turns out Walter didn't like "rear" for a certain reason. :o) He did
take to my cute "toe" but in the end did not reflect that in the dox.
The following code compiles and runs:
struct S
{
bool empty() {return true;}
void next() {}
void retreat() {}
int head() { return 0; }
int toe() { return 0; }
}
void main() {
S s;
foreach (e; s) {}
foreach_reverse (e; s) {}
}
Andrei
More information about the Digitalmars-d
mailing list