Una función no debería cambiar nada de cuanto la rodea. Debería devolver algo y ya. Se acepta barco como animal acuático cuando hay funciones que escriben en logs, guardan datos en disco o crean gráficos.
R deja que los usuarios se disparen en el pie permitiendo hacer cosas tan peligrosas como:
1 2 3 4 5 6 7 8 9 10 11 |
a <- new.env() a$1 # error foo <- function(){ a$a <- 1 } foo() a$a # [1] 1 |
De la misma manera, si le enseñas un cuchillo a una vieja, es posible que te dé su bolso con todo lo que contiene. Pero eso no significa que debas usar los cuchillos para tales fines.