Wie man nicht in die "faule Bewertungsfalle" von R gerät

"R geht anVerspreche, keine Werte. Das Versprechen wird erzwungen, wenn es zum ersten Mal ausgewertet wird, nicht, wenn es bestanden wird. ", Siehediese Antwort von G. Grothendieck. Siehe auchdiese Frag unter Bezugnahme auf Hadleys Buch.

In einfachen Beispielen wie

> funs <- lapply(1:10, function(i) function() print(i))
> funs[[1]]()
[1] 10
> funs[[2]]()
[1] 10

s ist möglich, ein solches unintuitives Verhalten zu berücksichtige

Ich finde mich jedoch während der täglichen Entwicklung häufig in dieser Falle wieder. Ich verfolge einen eher funktionalen Programmierstil, was bedeutet, dass ich oft eine Funktion A habe, die eine Funktion B zurückgibt, wobei B in gewisser Weise von den Parametern abhängt, mit denen A aufgerufen wurde. Die Abhängigkeit ist nicht so leicht zu erkennen wie im obigen Beispiel, da Berechnungen komplex sind und mehrere Parameter vorhanden sind.

Das Übersehen eines solchen Problems führt zu schwer zu behebenden Problemen, da alle Berechnungen reibungslos ablaufen - mit der Ausnahme, dass das Ergebnis nicht korrekt ist. Nur eine explizite Validierung der Ergebnisse zeigt das Problem.

Obwohl ich ein solches Problem bemerkt habe, bin ich mir nie ganz sicher, welche Variablen ich fürforce und was ich nicht.

Wie kann ich sicherstellen, dass ich nicht in diese Falle tappe? Gibt es Programmiermuster, die dies verhindern oder zumindest sicherstellen, dass ich ein Problem bemerke?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage