Функциональное программирование - Ленивая оценка

Ленивая оценка - это стратегия оценки, которая удерживает оценку выражения до тех пор, пока не потребуется его значение. Это позволяет избежать повторной оценки. Haskell - хороший пример такого функционального языка программирования, основы которого основаны на Lazy Evaluation.

Ленивая оценка используется в функциях карт Unix для повышения их производительности путем загрузки только необходимых страниц с диска. Для оставшихся страниц память не будет выделена.

Ленивая оценка - преимущества

  • Это позволяет языковой среде выполнения отбрасывать подвыражения, которые не связаны напрямую с конечным результатом выражения.

  • Это уменьшает временную сложность алгоритма, отбрасывая временные вычисления и условные выражения.

  • Это позволяет программисту получать доступ к компонентам структур данных вне их порядка после их инициализации, если они свободны от каких-либо циклических зависимостей.

  • Лучше всего подходит для загрузки данных, к которым редко обращаются.

Ленивая оценка - недостатки

  • Это заставляет языковую среду выполнения хранить оценку подвыражений до тех пор, пока она не потребуется в конечном результате, создавая thunks (объекты с задержкой).

  • Иногда это увеличивает пространственную сложность алгоритма.

  • Очень трудно найти его производительность, потому что он содержит множество выражений перед их выполнением.

Ленивая оценка с использованием Python

Метод диапазона в Python следует концепции Lazy Evaluation. Это экономит время выполнения для больших диапазонов, и нам никогда не требуются все значения за раз, поэтому также экономит потребление памяти. Посмотрите на следующий пример.

r = range(10) 
print(r) 
range(0, 10) 
print(r[3]) 

Это даст следующий результат -

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
3