i guess i had less confidence that types come out right with vcat than i do 
with tuple.  but now i come to justify why, i can't, so yes, sorry for 
ignoring that earlier.

On Wednesday, 17 June 2015 19:18:32 UTC-3, Jameson wrote:
>
> In 0.4, you can now construct vector types directly:
> Vector{T}(dims...)
> making construction of some arrays a bit clear.
>
> But I think the array equivalent of `tuple` is `vcat`.
>
>
> On Wed, Jun 17, 2015 at 5:20 PM andrew cooke <[email protected] 
> <javascript:>> wrote:
>
>> thanks for all the replies.
>>
>> i really wanted something that took *only* the contents of the array, 
>> while getindex has the type too.  so i've defined my own "array" function:
>>
>> array(T) = (builder(x...) = T[x...])
>>
>> which i can use as, say, array(Any).
>>
>> (the final use case is that this is given to a parser and is used to 
>> construct an array from the results, in much the same way as i can 
>> currently pass in the function "tuple").
>>
>> i'd be interested if there's some nicer (ie using curly brackets) way of 
>> handling the type, T, or some way of defining anon functions (to avoid 
>> explicitly naming "builder") with interpolated args.
>>
>> cheers,
>> andrew
>>
>>
>>
>> On Wednesday, 17 June 2015 12:06:50 UTC-3, David Gold wrote:
>>>
>>> Soo, in summary (and I do apologize for spamming this thread; I don't 
>>> usually drink coffee, and when I do it's remarkable):
>>>
>>> 1) Mauro and Avik seem to be right about the common use case Any[1, 2, 
>>> 3, 4] lowering to getindex -- my apologies for hastily suggesting otherwise
>>> 2) I suspect I was wrong to say that concatenation in general doesn't go 
>>> through a function. It probably does, just not always through getindex 
>>> (sometimes vcat, typed_vcat, vect, etc).
>>>
>>> On Wednesday, June 17, 2015 at 10:15:00 AM UTC-4, David Gold wrote:
>>>>
>>>> However, it does look like this use pattern does resolve to 'getindex',
>>>>
>>>> *julia> **dump(:( Int[1, 2, 3, 4] ))*
>>>>
>>>> Expr 
>>>>
>>>>   head: Symbol ref
>>>>
>>>>   args: Array(Any,(5,))
>>>>
>>>>     1: Symbol Int
>>>>
>>>>     2: Int64 1
>>>>
>>>>     3: Int64 2
>>>>
>>>>     4: Int64 3
>>>>
>>>>     5: Int64 4
>>>>
>>>>   typ: Any
>>>>
>>>>
>>>> *julia> **getindex(Int, 1, 2, 3, 4)*
>>>>
>>>> *4-element Array{Int64,1}:*
>>>>
>>>> * 1*
>>>>
>>>> * 2*
>>>>
>>>> * 3*
>>>>
>>>> * 4*
>>>>
>>>>
>>>> So now I am not so sure about my claim that most concatenation doesn't 
>>>> go through function calls. However, I don't think that the rest of the 
>>>> concatenating heads (:vect, :vcat, :typed_vcat, etc.) lower to getindex:
>>>>
>>>>
>>>> *julia> **@which([1, 2, 3, 4])*
>>>>
>>>> *vect{T}(X::T...) at abstractarray.jl:13*
>>>>
>>>>
>>>> *julia> **@which([1; 2; 3; 4])*
>>>>
>>>> *vcat{T<:Number}(X::T<:Number...) at abstractarray.jl:643* 
>>>>
>>>>
>>>> they seem instead to call the type 'vect', 'vcat', etc. itself on the 
>>>> array arguments.
>>>>
>>>

Reply via email to