On Sunday, 9 March 2014 at 21:53:45 UTC, Adam D. Ruppe wrote:
On Sunday, 9 March 2014 at 21:47:17 UTC, bearophile wrote:
suggest to add to DIP57 one more thing: that the introduction of static foreach should come with a warning against the usage of not-static foreach on tuples (and eventually this warning should become a deprecation message).


I don't agree because foreach on a tuple is just plain foreach. That it unrolls is just an implementation detail that doesn't change much else. I think considering it to be a separate kind of loop is like considering foreach over arrays, ranges, and opApply items separate loops. Those are just different implementation details of the same user concept.

Can't agree. You can't call it implementation detail if it is a property that leaks into user code and can be relied upon. I sometimes hear statements akin to "tuple is like container and tuple foreach is just like foreach" but it is a very idealistic view that simply does not match current D state. Despite all behavior hacks that try to make it look so.

So right now it _is_ a separate and distinctive kind of loop. At the same time it is a very specialized tool and deprecating it does not sound like a practical approach for reducing language complexity. Probably some years later if we eventually find out no one uses it anymore.

Reply via email to