# --- Immutable (default) mode ---
a <- shared_input(5)
a$value() # 5
a2 <- a$modify(a$value() + 7)
a$value() # 5
a2$value() # 12
# Cloning and resetting
a3 <- a2$clone()
a4 <- a2$reset()
a3$value(); a4$value() # 12, 5
# Forking
forks <- a$fork(3)
vapply(forks, function(x) x$value(), numeric(1))
# --- Shared (constrained) mode ---
constrained <- TRUE
b1 <- shared_input(10)
b2 <- b1 # alias (same state)
b1$modify(11)
b1$value(); b2$value() # both 11
b3 <- b1$clone()
b1$modify(99)
b1$value(); b3$value() # 99, 11
# Reset breaks sharing
b4 <- b1$reset()
b4$value() # 10
Run the code above in your browser using DataLab