Я пытаюсь понять, как работает ленивое вычисление в R. Применяется ли это только к оценке аргументов функции? Потому что я понимаю, например
f <- function(x = x, y = x*2) {
c(x, y)
}
f(2)
[1] 2 4
Но на других языках, например В Haskell ленивое вычисление означает, что вызов функции оценивается только в том случае, если он когда-либо действительно использовался. Поэтому я ожидал, что что-то вроде этого запустится в одно мгновение:
g <- function(x) {
y <- sample(1:100000000)
return(x)
}
g(4)
Но он четко оценивает вызов sample
, даже если его результат не используется.
Может ли кто-нибудь точно объяснить, как это работает, или указать мне, где это подробно объясняется?
Похожие вопросы: