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