Programação funcional - avaliação preguiçosa

A avaliação preguiçosa é uma estratégia de avaliação que mantém a avaliação de uma expressão até que seu valor seja necessário. Isso evita avaliações repetidas.Haskell é um bom exemplo de uma linguagem de programação funcional, cujos fundamentos são baseados na avaliação preguiçosa.

A avaliação lenta é usada nas funções de mapa do Unix para melhorar seu desempenho carregando apenas as páginas necessárias do disco. Nenhuma memória será alocada para as páginas restantes.

Avaliação preguiçosa - vantagens

  • Ele permite que o tempo de execução da linguagem descarte subexpressões que não estejam diretamente vinculadas ao resultado final da expressão.

  • Ele reduz a complexidade do tempo de um algoritmo, descartando os cálculos temporários e condicionais.

  • Ele permite que o programador acesse componentes de estruturas de dados fora de ordem após inicializá-los, desde que estejam livres de quaisquer dependências circulares.

  • É mais adequado para carregar dados que serão acessados ​​com pouca frequência.

Avaliação preguiçosa - desvantagens

  • Ele força o tempo de execução da linguagem a manter a avaliação de subexpressões até que seja necessário no resultado final, criando thunks (objetos atrasados).

  • Às vezes, aumenta a complexidade do espaço de um algoritmo.

  • É muito difícil encontrar seu desempenho porque ele contém muitas expressões antes de sua execução.

Avaliação preguiçosa usando Python

o rangemétodo em Python segue o conceito de avaliação preguiçosa. Ele economiza o tempo de execução para intervalos maiores e nunca exigimos todos os valores de uma vez, portanto, também economiza o consumo de memória. Dê uma olhada no exemplo a seguir.

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

Ele produzirá a seguinte saída -

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