Julia’s `map!` applies a function to each value in an input collection and writes the results into an existing destination array. Call it as `map!(f, destination, input)`: the destination is the second argument, not the third. Unlike `map`, it lets you reuse an array instead of creating a new one for each transformation. section 4.7
result = zeros(Float64, length(0:15:90)) #1 map!(deg2rad, result, 0:15:90) #2 map!(sin, result, result) #2
A sine-table calculation first allocates a `Float64` result array. One `map!` call fills it with radians; the next uses that same array as both input and destination to replace radians with sine values. section 4.7
When input and destination are separate, `map!` leaves the input unchanged. Reusing one array for both requires it to have the type and length needed for the output. For simpler code, consider combining transformations into one function and calling `map` once; mutation can make code harder to analyze. section 4.7

