J'essaie de comprendre à quel point l'évaluation paresseuse dans R fonctionne. Cela s'applique-t-il seulement à l'évaluation des arguments de fonction? Parce que je comprends, par ex.Comprendre l'évaluation paresseuse dans R
f <- function(x = x, y = x*2) {
c(x, y)
}
f(2)
[1] 2 4
Mais dans d'autres langages, par ex. Haskell, évaluation paresseuse signifie qu'un appel de fonction n'est évalué que s'il est réellement utilisé. Donc, je me attends quelque chose comme ça à courir en un instant:
g <- function(x) {
y <- sample(1:100000000)
return(x)
}
g(4)
Mais il évalue clairement l'appel sample
même si le résultat ne soit pas utilisé.
Est-ce que quelqu'un pourrait expliquer exactement comment cela fonctionne, ou me diriger dans la direction de l'endroit où il est expliqué en détail?
des questions similaires:
Question with similar wording, but different problem
Je me réfère au livre de Hadley Wickham, où il mentionne: « Par défaut, les arguments de la fonction R sont paresseux, ils ne sont évaluées, si elles sont utilisées en fait ». N'est-ce pas vrai avec les dernières versions alors? – Sarang
Notez que la question comprenait cette phrase "Est-ce que cela s'applique uniquement à l'évaluation des arguments de fonction?" Ma réponse ne contredit pas la déclaration de Wickham. –