I would like to trace functions, displaying their arguments and return value, but I haven't been able to figure out how to do this with the 'trace' function.
After some thrashing, I got as far as this: fact <- function(x) if(x<1) 1 else x*fact(x-1) tracefnc <- function() dput(as.list(parent.frame()), # parent.frame() holds arg list control=NULL) trace("fact",tracer=tracefnc,print=FALSE) but I couldn't figure out how to access the return value of the function in the 'exit' parameter. The above also doesn't work for "..." arguments. (More subtly, it forces the evaluation of promises even if they are otherwise unused -- but that is, I suppose, a weird and obscure case.) Surely someone has solved this already? What I'm looking for is something very simple, along the lines of old-fashioned Lisp trace: > defun fact (i) (if (< i 1) 1 (* i (fact (+ i -1))))) FACT > (trace fact) (FACT) > (fact 3) 1> (FACT 3) 2> (FACT 2) 3> (FACT 1) 4> (FACT 0) <4 (FACT 1) <3 (FACT 1) <2 (FACT 2) <1 (FACT 6) 6 Can someone help? Thanks, -s ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.