Forgive what is probably and old discussion, but I am curious why array subscripts create copies of arrays instead of views into them. Given
julia> a = [1:3 1:3]; I can mutate a whole column of the array in place by saying julia> a[:,2] = [4:6]; julia> a 3x2 Array{Int64,2}: 1 4 2 5 3 6 But my sense of referential transparency is violated because I can't further mutate that this way julia> a[:,2][1] = 10; julia> a 3x2 Array{Int64,2}: 1 4 2 5 3 6 I can achieve mutable sub-views with the sub function julia> sub(a, :, 2)[1] = 10; julia> a 3x2 Array{Int64,2}: 1 10 2 5 3 6 Why the difference? Why not make [] syntax sugar for sub? (As () will be for call in 0.4)