Baixe o app para aproveitar ainda mais
Prévia do material em texto
* Haskell aula 09 Avaliação preguiçosa Prof. Msc Aurélio Andrade de Menezes Júnior. * Avaliação preguiçosa A linguagem Haskell utiliza uma estratégia na avaliação das funções denominada avaliação preguiçosa (lazy evaluation), cujo fundamento é que não se avalia nenhuma subexpressão ou função até que seu valor seja reconhecido como necessário. Este conceito é ilustrado pelo exemplo a seguir: * Avaliação preguiçosa dobro, triplo :: Int -> Int menor, f :: Int -> Int -> Int menor x y| x<y = x | otherwise = y dobro x = x + x triplo x = 3 * x f a b = (dobro (triplo (menor a b))) Ao se executar a função f, a sua avaliação real é dada por: * Avaliação preguiçosa f a b = (dobro (triplo (menor 9 8))) =(triplo (menor 9 8)) + (triplo (menor 9 8)) =(3 * (menor 9 8)) + (triplo (menor 9 8)) =(3 * (menor 9 8)) + (3 * (menor 9 8)) =(3 * 8) + (3 * (menor 9 8)) =(3 * 8) + (3 * 8) = 24 + (3 * 8) = 24 + 24 = 48 * Avaliação preguiçosa Este tipo de avaliação traz muitas vantagens, inclusive a habilidade de representar potencialmente, estruturas de dados infinitas, como o conjunto de números inteiros. A avaliação preguiçosa implica que funções podem tanto receber argumentos não avaliados como também retornar resultados parcialmente não avaliados. * Dúvidas
Compartilhar