local({ previous_options <- options(warn = 2, digits = 8, stringsAsFactors = FALSE) on.exit(options(previous_options), add = TRUE) make_counter <- function() { value <- 0L function() { value <<- value + 1L value } } a <- make_counter() b <- make_counter() cat("A:", a(), a(), "B:", b(), "\n") invisible(NULL) })