Ok, but then why does it return the Vector{Any}. The following two functions give different results
function makestring(fun) A::Array{ASCIIString} = [fun(i) for i = 1:3] end function makestring(fun) A::Array{ASCIIString} = [fun(i) for i = 1:3] convert(Array{ASCIIString},A) end I thought maybe it was a weird REPL thing, but it's not. On Wednesday, October 29, 2014 1:52:01 PM UTC-4, John Myles White wrote: > > I'm pretty sure this sort of thing always works since type declarations on > variables behave like convert calls: > > julia> function foo() > a::Int64 = 0x01 > return a > end > foo (generic function with 1 method) > > julia> foo() > 1 > > -- John > > On Oct 29, 2014, at 10:50 AM, Zenna Tavares <zennat...@gmail.com > <javascript:>> wrote: > > > Also, the following runs but still returns a Vector{Any}. How is this > possible? > > > > function makestring(fun) > > A::Array{ASCIIString} = [fun(i) for i = 1:3] > > end > > > > > > On Wednesday, October 29, 2014 1:45:51 PM UTC-4, Zenna Tavares wrote: > > As shown in the following example, I am getting differently typed arrays > depending on where I use the list comprehension. > > > > f(i) = "$i" > > A = [f(i) for i = 1:3] > > function makestring(fun) > > A = [fun(i) for i = 1:3] > > end > > B = makestring(f) > > > > In this example A has type Vector{ASCIIString} while B has type > Vector{Any}. What gives? And is there a workaround such that we get a more > specific type? > > > > I understand there are some open issues related to this, but I am not > sure if this case comes under what's already been discussed. > > > > > >