Why does the following eval() call on sys.on.exit() not return what I expect/evaluate in the proper environment?
foo <- function() { cat("foo()...\n"); on.exit( message("exiting") ) cat("sys.on.exit():\n") res <- sys.on.exit() print(res) cat("eval(sys.on.exit()):\n") expr <- quote(sys.on.exit()) print(expr) res <- eval(expr) print(res) cat("foo()...done\n") } > foo() foo()... sys.on.exit(): message("exiting") eval(sys.on.exit()): sys.on.exit() NULL foo()...done exiting Similar problems appear when I try to "record" on.exit() expressions via eval(). It appears that the "primitives" on.exit() and sys.on.exit() do something rather special. Is there a solution to what I'm trying to do? The reason why I'm doing this in the first place, is that I'm trying to implement onExit(<expr>, where="replace"), onExit(<expr>, where="last"), and onExit(<expr>, where="first"). Thanks, Henrik ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel