Andrei Alexandrescu wrote: > Denis Koroskin wrote: >> On Sun, 18 Jan 2009 18:21:55 +0300, Andrei Alexandrescu >> <[email protected]> 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
toe() ?! tail() good, rear() not so good, toe() sucks. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
