On Sat, 11 May 2024, Peter Langfelder wrote:
On Sat, May 11, 2024 at 9:34 AM luke-tierney--- via R-devel
<r-devel@r-project.org> wrote:
On Sat, 11 May 2024, Travers Ching wrote:
The following code snippet causes R to hang. This example might be a
bit contrived as I was experimenting and trying to understand
promises, but uses only base R.
This has nothing to do with promises. You created a cycle in the
environment chain. A simpler variant:
e <- new.env()
parent.env(e) <- e
get("x", e)
This will hang and is not interruptable -- loops searching up
environment chains are too speed-critical to check for interrupts. It
is, however, pretty easy to check whether the parent change would
create a cycle and throw an error if it would. Need to think a bit
about exactly where the check should go.
FWIW, the help for parent.env already explicitly warns against using
parent.env <-:
The replacement function ‘parent.env<-’ is extremely dangerous as
it can be used to destructively change environments in ways that
violate assumptions made by the internal C code. It may be
removed in the near future.
Looks like I added that warning 22 years ago, so that should be enough
notice :-). I'll look into removing it now.
Best,
luke
Peter
--
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa Phone: 319-335-3386
Department of Statistics and Fax: 319-335-3017
Actuarial Science
241 Schaeffer Hall email: luke-tier...@uiowa.edu
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel