yeah, that is actually what I was saying. I just provided an alternative way of looking at it where you pipeline the dependent operations instead of running them at the same time.
eg: instead of:
foreach actor(find collisions -> find response -> do movement)
do: foreach actor(find collisions) ->
foreach actor(find response) ->
foreach actor(do movement)
That way you may modify the primary data structure directly in the 'do movement' response without any conceptual 'data races'. It really just off loads the information lost from 'mutability' to the secondary data structures of collision lists and the like.