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.