Why would you want this behavior? How could you possibly benefit from 
modifying X anytime you modify Y just because Y=X initially? If I wanted to 
modify X, I would modify X itself, not Y. 

Bradley




On Friday, December 26, 2014 1:53:12 PM UTC-6, John Myles White wrote:
>
> This is aliasing. Almost all languages allow this.
>
>  -- John
>
> Sent from my iPhone
>
> On Dec 26, 2014, at 2:49 PM, Bradley Setzler <[email protected] 
> <javascript:>> wrote:
>
> Hi,
>
> I cannot explain this behavior. I apply a function to a variable in the 
> workspace, the function initializes its local variable at the workspace 
> variable, then modifies the local variable and produces the desired output. 
> However, it turns out the Julia modifies both the local and workspace 
> variable with each operation on the local variable. Only the local variable 
> is supposed to be modified. 
>
> *This is very dangerous behavior, as Julia is modifying the data itself 
> between performing operations on the data; the data itself is supposed to 
> remain fixed between operations on it.*
>
> *Minimal working example:*
>
> data=[1,2,3]
> function square(arg)
>     inner_var = arg
>     for i=1:length(inner_var)
>         inner_var[i] = inner_var[i]^2
>     end
>     return inner_var
> end
> output=square(data)
>
> julia> print(data)
>
> [1,4,9]
>
> The data has been squared due to the local variable, which was initialized 
> at the data values, being squared. Now, if i wish to apply a different 
> function to the data, the result will be incorrect because the data has 
> been modified unintentionally.
>
> How long has Julia been doing this? Was this behavior intentional?
> Bradley
>
>
>

Reply via email to