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