See if `isgeneric` helps (and you can check its implementation to see how it works).
Best, --Tim On Sunday, March 29, 2015 09:06:05 AM Sheehan Olver wrote: > Hmm, this is surprising, how can you tell the difference between anonymous > and named functions? > > g=x->x^2 > foo(x,y)=1 > typeof(g)==typeof(foo) #true > > > On 29 Mar 2015, at 7:50 am, Sheehan Olver <[email protected]> wrote: > > Great, thanks! It looks like applicable doesn’t work on anonymous > > functions, which seems like a bug. I guess I’ll file a ticket.> > >> On 29 Mar 2015, at 7:47 am, Miles Lubin <[email protected] > >> <mailto:[email protected]>> wrote: > >> > >> Take a look at applicable(). > >> > >> On Saturday, March 28, 2015 at 4:30:09 PM UTC-4, Sheehan Olver wrote: > >> It currently works like this, which does work with f(x)=x, f(x,y) = x+y: > >> > >> try > >> > >> f(0) > >> > >> catch > >> > >> try > >> > >> f(0,0) > >> > >> catch > >> > >> f((0,0)) > >> > >> end > >> > >> end > >> > >> This code is meant for REPL usage primarily, and so the convenience of > >> typing just Fun(f) is worth having such “questionable” code.>> > >> > On 29 Mar 2015, at 6:29 am, Mauro <[email protected] <javascript:>> wrote: > >> >> In ApproxFun, a user supplied function is approximated. the > >> >> approximation depends on whether the function is univariate or > >> >> bivariate > >> > > >> > How does it work, if the user defines several methods? > >> > > >> > f(x) = x > >> > f(x,y) = x+y > >> > > >> >>> The method_exists function would probably be a slightly cleaner way > >> >>> to do this. > >> > > >> > method_exists should be good for generic functions but it does not work > >> > with anonymous functions. I think this gives you the number of > >> > arguments: > >> > > >> > length(Base.uncompressed_ast(( (x,y,z)->1 ).code.def).args[1]) > >> > > >> > something similar should let you figure out whether a one-argument > >> > signature is a tuple. Not sure though this is the preferred approach.
