Próbuję zrozumieć, jak leniwe oceny w R działa. Czy dotyczy to tylko oceny argumentów funkcji? Ponieważ to rozumiem, np.Zrozumienie leniwe oceny w R
f <- function(x = x, y = x*2) {
c(x, y)
}
f(2)
[1] 2 4
Ale w innych językach, np. Haskell, leniwy ewaluacja oznacza, że wywołanie funkcji jest oceniane tylko wtedy, gdy jest faktycznie używane. Więc chciałbym się spodziewać czegoś jak to uruchomić w jednej chwili:
g <- function(x) {
y <- sample(1:100000000)
return(x)
}
g(4)
Ale to jasno ocenia wezwanie sample
chociaż jego wynik nie przyzwyczaić.
Czy ktoś może wyjaśnić dokładnie, jak to działa, lub wskazać mi kierunek, w którym zostało to szczegółowo wyjaśnione?
Podobne pytania:
Question with similar wording, but different problem
Mam na myśli książki Hadley Wickhama, gdzie jest mowa o: „Domyślnie, argumenty funkcji R są leniwi, są one tylko ocenić, czy stosowane właściwie”. Czy nie jest to prawdą w przypadku najnowszych wersji? – Sarang
Należy zauważyć, że pytanie zawierało zdanie "Czy dotyczy to tylko oceny argumentów funkcji?" Moja odpowiedź nie jest sprzeczna z oświadczeniem Wickhama. –