Hm... so the entire issue here seems to be the capability to do iteration and modification in a concurrent manner, right?
IMHO that may not be worth the costs we're paying -- I would argue that you normally shouldn't be modifying a collection that you're iterating over in the first place; it just doesn't make any sense when you're delaying everything. Sure, it would work fine if you couldn't have more than one reference to any container (since every range would would then have the same view of the container), but when we're introducing delayed evaluation with ranges, I just don't see how (or even why) it should be combinable with modification. It's like trying to read from a database and concurrently modifying the underlying storage by hand, bypassing the database... it just doesn't work that way, outside of functional programming. So is it really worth paying the price?