Yes in the sense it hands anon functions

On Friday, September 18, 2015 at 8:41:16 AM UTC-4, Mauro wrote:
>
> Is that better than Base.return_types ? 
>
> On Fri, 2015-09-18 at 14:36, Michael Francis <[email protected] 
> <javascript:>> wrote: 
> > function returns(f, types) 
> >   rt = [] 
> >   if( !isdefined(f, :code) ) 
> >     for x in Base._methods(f,types,-1) 
> >         linfo = x[3].func.code 
> >         (tree, ty) = typeinf(linfo, x[1], x[2]) 
> >         push!(rt, ty) 
> >     end 
> >   else 
> >     # It is a lambda, not a function, we also need the types of the 
> bound 
> >     # variables to evaluate the lambda corectly 
> >     println( types ) 
> >     linfo = f.code 
> >     env = f.env 
> >     (tree, ty) = typeinf(linfo, types, () ) 
> >     push!(rt, ty) 
> >   end 
> >   # If there is a set of return types we default to any for now 
> >   # this could be converted to a union type 
> >   if( length( rt ) == 0 ) 
> >     println( "Failed to resolve return type for $f, $types") 
> >   elseif( length(rt) > 1 ) 
> >     return Any 
> >   else 
> >     return rt[1] 
> >   end 
> > end 
> > 
> > 
> > 
> > The above is what I do - which also copes with anon-functions 
> > 
> > On Friday, September 18, 2015 at 8:32:45 AM UTC-4, Tomas Lycken wrote: 
> >> 
> >> Given a function `foo(x,y)` and two *types* `TX` and `TY`, is there a 
> way 
> >> I can get the inferred return type from calling `foo(x::TX, y::TY)`? I 
> want 
> >> to do this in the compile part of a generated function, so I don't have 
> >> access to any values to actually call the function with. 
> >> 
> >> I have already verified that the function `foo` is type stable, so the 
> >> inferred type should be good enough for my purposes. 
> >> 
> >> Thanks, 
> >> 
> >> // T 
> >> 
>
>

Reply via email to