Immutable array supporting fast "modification" via structural sharing