lazy evaluation

R es un vago

Si creo la función 1 foo <- function(a,b) a*a + b y la llamo mediante 1 foo(1 + 1,3) pueden ocurrir dos cosas: o bien que R precalcule 1+1 y la función ejecute 2 * 2 + 3 o bien que la función ejecute directamente (1+1)*(1+1)+3. Pero, ¿qué es lo que hace realmente? Si escribimos 1 2 3 4 5 6 7 8 9 10 11 f1 <- function(x){ print("Soy f1") x } f2 <- function(x){ print("Soy f2") x } foo(f1(2), f2(3)) obtenemos