Anonymous function types.
Add Arg and Ret type parameters to the Function type. Those are determined by annotation at the lambda site, e.g. (a::Arg -> (a+1)::Ret) :: Function{(Arg,),Ret}.
Untyped function are ::Function{Tuple,Any}.
Inference should type the declarations and call-sites correctly.