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. 
> > 
> > 
>
>

Reply via email to