Pełna lenistwo został repeatedly demonstrated do cause space leaks.Dlaczego pełne lenistwo jest domyślną optymalizacją?
Dlaczego pełne lenistwo zaczyna się od -O
? Nie przekonuje mnie rozumowanie w SPJ's The Implementation of Functional Programming Languages. Twierdzenie, że w
f = \y -> y + sqrt 4
sqrt 4
niepotrzebnie powtarza się za każdym razem f
jest wpisany więc powinniśmy unosić go poza lambda. Zgadzam się w małych, ale ponieważ widzieliśmy, jakie problemy powoduje ta transformacja w dużych nie sądzę, że warto. Wydaje mi się, że korzyści płynące z tej transformacji można uzyskać jednostronnie ** tylko z lokalnymi zmianami kodu i programiści, którzy chcą ją wdrożyć ręcznie.
Czy możesz mnie przekonać inaczej? Czy naprawdę jest przydatna full-laziness
? Będę szczególnie przekonany, jeśli potrafisz podać przykłady, które ręcznie wdrażać wymagają wielostronnej współpracy lub nielokalnych transformacji.
** przeciwieństwie optymalizacje jak inline i fusion strumień, który do realizacji przez strony wymaga wielostronnej współpracy między modułami i kodu nielokalnego zmienia
Transformacja typu "full-laziness" w rzeczywistości nie ma nic wspólnego z porządkiem oceny. –