Voll Faulheit hat gewesen repeatedly demonstrated zu cause space leaks.Warum ist Vollfaulheit eine Standardoptimierung?
Warum ist die volle Faulheit von -O
an? Ich bin nicht von der Argumentation in SPJs The Implementation of Functional Programming Languages überzeugt. Die Forderung ist, dass in
f = \y -> y + sqrt 4
sqrt 4
unnötig jedes Mal wiederholt wird f
eingegeben wird, so sollten wir es außerhalb des Lambda schweben. Ich stimme dem zu, aber seit wir gesehen haben, welche Probleme diese Transformation im Großen verursacht, glaube ich nicht, dass es das wert ist. Es scheint mir, dass die Vorteile dieser Transformation einseitig erzielbar sind ** mit nur lokalen Code-Änderungen und Programmierern, die es von Hand implementieren möchten.
Können Sie mich sonst überzeugen? Ist full-laziness
wirklich wirklich nützlich? Ich bin besonders überzeugt, wenn Sie Beispiele nennen können, die per Hand eine multilaterale Zusammenarbeit oder nicht-lokale Transformationen erfordern.
** im Gegensatz zu Optimierungen wie inlining und Strom-Fusion, die von Hand implementieren würde multilaterale Zusammenarbeit zwischen den Modulen und nicht-lokalem Code erfordert Änderungen
Die 'Full-Faulheit'-Transformation hat eigentlich nichts mit der Bewertungsreihenfolge zu tun. –