I think this proposal has one fatal flaw... There is no way for the opApply function to do something after iteration stops prematurely. Some data structures could change internal state as they iterate. Those state changes may require clean-up. I have no good examples at the moment, but know they exist.