Slides

9 paradigma funcional usando haskell

Description
1. Paradigmas de Linguagens de Programação<br />Prof. Péricles Miranda<br />periclesmiranda@gmail.com<br /> 2. Paradigma Funcional usando…
Categories
Published
of 13
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Related Documents
Share
Transcript
  • 1. Paradigmas de Linguagens de Programação<br />Prof. Péricles Miranda<br />periclesmiranda@gmail.com<br />
  • 2. Paradigma Funcional usando Haskell<br />
  • 3. LazynessouAvaliaçãopreguiçosa<br />
  • 4. Lazyness<br />Linguagens de programação imperativas possuem o conceito de avaliação eagerou faminta:<br />Toda chamada de função é executada imediatamente;<br />Uma função só pode ser executada depois que todos os argumentos são avaliados.<br />Haskell é uma linguagem funcional que adota o conceito de Lazyness:<br />Quando uma chamada a função é encontrada no programa, esta chamada é guardada e somente será executada se o valor de retorno for necessário;<br />Os argumentos de funções são passados de forma não avaliada e serão executados a medida em que forem necessários;<br />
  • 5. Exemplo:<br />Programa em Haskell:<br /> f :: a -> b -> a<br /> f x y = x<br />Avalia corretamente a expressão:<br /> f (2+3) (2/0)<br />
  • 6. Lazyness<br />Vantagens:<br />Computações cujos valores não são necessários não são avaliados;<br />Em determinadas situações, programas que gerariam erros podem funcionar corretamente;<br />Novas técnicas de programação;<br />Desvantagem:<br />Maior custo computacional na execução das expressões.<br />
  • 7. > head [(1+2),(3+1)]<br />O usuário pede para avaliar uma expressão.<br />Como Funciona a Lazyness?<br />
  • 8. > E0<br />Como Funciona a Lazyness?<br />As chamadas as funções são armazenadas nas tabela de funções.<br />
  • 9. > E0<br />Como Funciona a Lazyness?<br />E0 é o resultado da expressão e deve ser impresso, antes disso ele precisa ser executado.<br />
  • 10. > E0<br />Como Funciona a Lazyness?<br />Mas:<br />head [a,b] = a<br />Portanto:<br />head E1 = E1<br />
  • 11. > E2<br />Como Funciona a Lazyness?<br />E2 não está avaliado, deve ser avaliado.<br />1+2 => 3<br />
  • 12. > E2<br />Como Funciona a Lazyness?<br />E2 está avaliado, e pode ser mostrado. <br />
  • 13. Paradigmas de Linguagens de Programação<br />Prof. Péricles Miranda<br />periclesmiranda@gmail.com<br />
  • We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks