Haskell

754 visualizações

Publicada em

0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
754
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
42
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Haskell

  1. 1. Seminário PLPLinguagem Funcional HaskellDaniele MontenegroJoice Taciana
  2. 2. Agenda De onde vem o Nome; O que é Haskell; Um pouco da História; Características; O que precisa para Programar; Aplicações; Primeiro Programa – Olá Mundo; 2/37
  3. 3. Agenda Avaliação Preguiçosa Inferência de Tipos Comandos e Expressões Listas Tuplas Funções Classes 3/37
  4. 4. De onde vem o Nome Do matemático Haskell B. Curry, conhecido por seu trabalho em lógica combinatória. 4/37
  5. 5. O que é Haskell É uma linguagem de programação puramente funcional. Baseada no lambda-calculus, que surgiu nos anos 80; Open Souce. 5/37
  6. 6. Um pouco da História Foi desenvolvida por um Comitê, que se reuniu a primeira vez em 1988; A primeira versão saiu em 1990; Em Janeiro de 1999 saiu a versão estável a Versão Haskel 98, que sofreu uma revisão em Janeiro de 2003. 6/37
  7. 7. Influência Haskell foi influenciada pela Linguagem ML. 7/37
  8. 8. Características Concisa; Estaticamente Tipada; Fortemente Tipada Inferência de Tipo; Avaliação Lazy Gestão Automática de Memória; Compilada 8/37
  9. 9. O que Precisa para Programar Editor de Texto; Compilador Haskell; Plataforma: http://www.haskell.org/platform/ 9/37
  10. 10. Aplicações Computação Simbólica; Processamento de Listas; Aplicações Cientificas; Jogos; Compiladores. 10/37
  11. 11. Primeiro Programa – Olá Mundo! 11/37
  12. 12. Avaliação Preguiçosa Haskell não irá executar funções e calcular as coisas antes que ele seja realmente obrigado a lhe mostrar um resultado; Ex: A ordem que ocorrem as expressões não é especificada. Para isso, usamos o comando do 12/37
  13. 13. Avaliação Preguiçosa 13/37
  14. 14. Inferência de Tipos O tipo de toda expressão é conhecido na hora da compilação; Funções também têm tipos; Ao declarar uma função podemos declarar seu tipo. 14/37
  15. 15. Comandos e Expressões A linguagem Haskell é baseada na avaliação de expressões; A implementação da linguagem avalia a expressão passada até sua forma normal. 15/37
  16. 16. Comandos e Expressões 16/37
  17. 17. Variáveis e Objetos Imutáveis Haskell se fundamenta no conceito de funções, seus parâmetros e seus retornos; Não possui variáveis que mudam de valor e comandos de repetição baseados no teste sobre o valor armazenado nessas variáveis. 17/37
  18. 18. Listas Em Haskell, são estruturas de dados homogêneas; Podem ser construídas com base em dois construtores primitivos: [ ] e : [1,2,3] = 1:[2,3] = 1:2:[3] = 1:2:3:[] 18/37
  19. 19. ListasExemplos 19/37
  20. 20. ListasSomando duas Listas: 20/37
  21. 21. ListasAcessando um Elemento pelo ÍndiceListas pode conter Listas 21/37
  22. 22. Tuplas Não precisam ser homogêneas; São caracterizadas por Parênteses; Exemplo: 22/37
  23. 23. Algoritmo Quicksort Se a lista é a vazia não há elementos para ordenar S é o Primeiro elemento da lista e é usado como Pivô, e XS é o restante da Lista 23/37
  24. 24. Algoritmo Quicksort A lista é dividida em duas Partes. A primeira contem os elementos XS que são menores que S As duas listas são ordenadas recursivamente. 24/37
  25. 25. Currying de Função Toda função em Haskell oficialmente recebe apenas um parâmetro; Para aceitar mais de um parâmetro é necessário usar o Currying de Função; É uma técnica de avaliação parcial dos argumentos de uma função; 25/37
  26. 26. Currying de FunçãoExemplo: Colocar um espaço entre duas coisa é simplesmente aplicar a função; Essa técnica já é nativa para o Haskell. 26/37
  27. 27. Função Fatorial sem Recursividade 27/37
  28. 28. Função Fatorial com Recursividade 28/37
  29. 29. Função Anônima É possível utilizar funções anônimas na definição de outras funções.Exemplo: x -> e 29/37
  30. 30. Função de Ordem Superior Funções como argumentos ou como resultado de outras funções; 30/37
  31. 31. Pattern Matching Consiste na pesquisa por padrões em determinados dados e, caso tenha sucesso, fazer algo com o ele; Ao definir funções, você pode definir códigos específicos para cada padrão. 31/37
  32. 32. Pattern MatchingExemplo 32/37
  33. 33. Expressões Case 33/37
  34. 34. Classes e Objetos Não tem o conceito de Objeto; E as classes funcionam como um Tipo de Dado Abstrato; Coleção de tipos que suportam operações comuns; A definição de um classe consiste em: 34/37
  35. 35. Classes Básicas em Haskell Eq: tipos com igualdade Ord: tipos ordenados Show: tipos mostráveis Read: tipos legíveis Num: tipos numéricos 35/37
  36. 36. O papel das classes em Haskell Sobrecarga Um único nome indica muitas funções; (+) engloba adição de inteiros e de reais. Parametrização Implícita Quando instanciamos um tipo nosso como derivado de uma classe, herdamos a assinatura definida por seus métodos; Todos os (+) tem de ter assinatura a->a->a A instanciação pode ser parcial 36/37
  37. 37. Obrigada! 37/37

×