[Rd] on.exit() & sys.on.exit(): Calling them via eval() does not work as hoped
Henrik Bengtsson
hb at biostat.ucsf.edu
Sun Nov 3 05:24:03 CET 2013
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
More information about the R-devel
mailing list