Programowanie funkcjonalne - leniwa ocena
Leniwa ocena to strategia oceny, która przechowuje ocenę wyrażenia do momentu, gdy będzie potrzebna jego wartość. Pozwala uniknąć wielokrotnej oceny.Haskell jest dobrym przykładem takiego funkcjonalnego języka programowania, którego podstawy są oparte na Lazy Evaluation.
Leniwe ocenianie jest używane w funkcjach map systemu Unix w celu poprawy ich wydajności przez ładowanie tylko wymaganych stron z dysku. Żadna pamięć nie zostanie przydzielona dla pozostałych stron.
Leniwa ocena - zalety
Pozwala środowisku wykonawczemu języka na odrzucanie wyrażeń podrzędnych, które nie są bezpośrednio powiązane z końcowym wynikiem wyrażenia.
Zmniejsza złożoność czasową algorytmu poprzez odrzucenie tymczasowych obliczeń i warunków.
Pozwala programiście na dostęp do nieuporządkowanych komponentów struktur danych po ich zainicjowaniu, o ile są one wolne od jakichkolwiek zależności cyklicznych.
Najlepiej nadaje się do ładowania danych, które będą rzadko używane.
Leniwa ocena - wady
Wymusza na środowisku wykonawczym języka wstrzymanie oceny wyrażeń podrzędnych, dopóki nie będzie to wymagane w wyniku końcowym przez utworzenie thunks (obiekty opóźnione).
Czasami zwiększa złożoność przestrzenną algorytmu.
Bardzo trudno jest znaleźć jego wykonanie, ponieważ zawiera bzdury wyrażeń przed ich wykonaniem.
Leniwa ocena przy użyciu języka Python
Plik rangemetoda w Pythonie jest zgodna z koncepcją Lazy Evaluation. Oszczędza czas wykonywania dla większych zakresów i nigdy nie wymagamy wszystkich wartości naraz, więc oszczędza również zużycie pamięci. Spójrz na poniższy przykład.
r = range(10)
print(r)
range(0, 10)
print(r[3])
Wytworzy następujący wynik -
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
3