I'm probably overlooking something simple, but is there a built-in function to "apply" a function to each element of an abstract array without creating a new array? This obviously only makes sense when you're updating an object as part of the function call. Here's an example below... does this exist in Base? Should it?
julia> function map_without_result(f, A) for x in A f(x) end end map_without_result (generic function with 1 method) julia> type MyType; x::Int; end julia> add_one!(mt::MyType) = mt.x += 1 add_one! (generic function with 1 method) julia> A = map(MyType, 1:5) 10-element Array{MyType,1}: MyType(1) MyType(2) MyType(3) MyType(4) MyType(5) julia> map_without_result(add_one!, A) julia> A 10-element Array{MyType,1}: MyType(2) MyType(3) MyType(4) MyType(5) MyType(6) Currently (on master from 5 days ago), "map(add_one!, A)" will return a new Vector{Int}, and "map!(add_one!, A)" gives an error: julia> map(add_one!, A) 5-element Array{Int64,1}: 3 4 5 6 7 julia> map!(add_one!, A) ERROR: MethodError: `convert` has no method matching convert(::Type{MyType}, ::Int64) This may have arisen from a call to the constructor MyType(...), since type constructors fall back to convert methods. Closest candidates are: MyType(::Int64) MyType(::Any) call{T}(::Type{T}, ::Any) ... in map! at abstractarray.jl:1447 in map! at abstractarray.jl:1444