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