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. Peter ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel