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

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

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

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

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

  • Это снижает временную сложность алгоритма за счет отказа от временных вычислений и условных выражений.

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

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

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

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

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

  • Найти его работоспособность очень сложно, так как он содержит пакеты выражений перед их выполнением.

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

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

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

Он выдаст следующий результат -

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