On Thu, 14 Oct 2010 13:49:13 -0400, bearophile <bearophileh...@lycos.com> wrote:

Steven Schveighoffer:

This is a common problem in defining an opApply loop which streams data -- do you make things safe or efficient? The only reasonable solution IMO is
to make them efficient, because safety can be had by duping the data.

The only reasonable solution is to make it safe, and then allow the unsafe and more efficient behaviour only on explicit request. This follows D philosophy and in practice it's the only design that allows you to write programs that actually work, instead of being just a nest for bugs.

How do you request in a foreach loop that it doesn't dup?

That's why I think the only one which allows both is the by default unsafe version.

Note also, by "unsafe" we just mean surprising :) It's still safe in terms of memory safety.


On Thu, 14 Oct 2010 13:55:38 -0400, Andrej Mitrovic <andrej.mitrov...@gmail.com> wrote:

So do I file this as a bug? The current behavior is way too subtle
imo, at least the compiler could issue a warning if this behavior is
intended.

Well, at the very least, this violates immutability. You can file a bug based on those grounds alone.

Whether the foreach loop should auto-dup for you is another question, I think it's fine to require you to dup each key's name if you plan on using it later, but this should be in the documentation.

-Steve

Reply via email to