Buscar

Haskell aula 09

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

Continue navegando