You can see the discussion about changing the deprecation suggestion 
here: https://github.com/JuliaLang/julia/pull/11369

I think people liked it because it's a bit of an abuse of terminology to 
call the [a:b;] form 'concatenation' when there is only one object being 
put into the array. The 'collect' form is semantically closer to converting 
the range into an array rather than concatenating it. It is just a 
suggestion though and I believe [a:b;] will continue to work fine for the 
foreseeable future. Another option that works is 'convert(Vector{Int}, 
1:5)'. All three call the 'vcat' function under the hood.

[c;d] should never have given a deprecation warning because that was always 
the proper syntax for vertical concatenation of two array-like objects. It 
was only the meaning of the comma and wrapping a single object in brackets 
that was changed. At least one semicolon is needed so that the parser knows 
to call vcat rather than vector creation. Any further superfluous ones are 
just ignored by the parser.

On Thursday, July 9, 2015 at 11:19:53 PM UTC-4, Patrick Belliveau wrote:
>
> Hi,
>       I'm running Julia Version 0.4.0-dev+5852. I ran some old code 
> yesterday that used the [a:b] syntax (where a and b are integers). Executing
>
> array = [a:b]
>
> gives the deprecation warning 
>
> WARNING: [a] concatenation is deprecated; use collect(a) instead. 
>
> Neither array = [3:5;], nor array = collect(3:5) produce any warnings and 
> they seem to give the same output. The deprecation warning would seem to 
> suggest that the collect(a:b) syntax is preferable to [a:b;]. I'm wondering 
> why that's the case? On a related note, for vectors c and d, array = [c;d] 
> doesn't give a deprecation warning suggesting the array = [c;d;] syntax, 
> which I believe it did on older 0.4.0-dev builds. What is the significance 
> of the trailing semicolon?
>
> Thanks very much, Patrick
>
>
>

Reply via email to