Paradigmas de Linguagem de ProgramaçãoProf. Péricles Mirandapericlesmiranda@gmail.com
Paradigma Funcional usando Haskell
Listas e Tuplas
Tipos em HaskellHaskell possui:Tipos PrimitivosTipos Compostos: Criados a partir da combinação de tipos primitivos.Notação: em Haskell todos os tipos iniciam com letras maiúsculas.
Tipos CompostosDefinem tipos a partir da composição de tipos existentes:Listas;Tuplas;Tipos Algébricos.
ListasDefinem uma seqüência de valores pertencentes a um mesmo tipo:[X] = lista de Valores do tipo X;[Int] = Tipo lista de inteiros;[Float] = Tipo lista de Floats;[Char] = Tipo lista de Caracteres;[[Int]] = Tipo lista de listas de Inteiros;[a] = Tipo lista polimórfica.
ListasAlguns exemplos válidos:[ ] = Lista vazia[1,2,3] = Lista formada pelos elementos 1,2 e 3[True, True, False][ [1,2,3], [3,2] , [4,3] ]Não é permitido listas com valores de tipos diferentes:[1,True][‘a’, 2]
ListasFunções de Listas:head: Retorna o primeiro elemento da lista;tail: Retorna a cauda da lista;length: Retorna o comprimento da lista;take n l: Retorna os “n” primeiros elementos da lista;(h : t) : cria uma lista a partir de uma cabeça e caudaEm Haskell Strings são definidas como listas de caracteres:“casa” == [‘c’, ‘a’, ‘s’, ‘a’]
ListasValores do tipo lista podem ser expressos das seguintes formas:Listagem de elementos: [1,2,3,4], [2,4,6,3];Faixa de valores:[1..10], [1,3..10];[1,3..];Compreenssão:[ x*x | x <- [1..5] ];[ x * y | x <- [1..10] , y <- [2..10] ]
TuplasTipo formado pelo produto cartesiano de outros tipos (possivelmente diferentes)Notação de tipos:() = Tipo que não armazena nenhuma informação (equivalente ao void.(Int, Int) = Par de inteiros(Int, Int, Int) = Trinca de inteiros(Float, Int) = Par formado por um Float seguido por um inteiro.([Int], Char) = Tupla formada por uma lista de inteiros seguido por um caracteres[(Int,Char)] = Lista de pares inteiro X caractere
Vamos Praticar?
Exercícios1) Somar elementos de uma Lista;2) Incrementar ‘1’ a cada elemento da lista;3) Somar elementos de tupla de dois elementos;4) Incrementar ‘1’ a elementos de tupla de dois elementos;5) Converter tupla em lista;6) Converter lista em tupla;
Paradigmas de Linguagem de ProgramaçãoProf. Péricles Mirandapericlesmiranda@gmail.com

7 paradigma funcional usando haskell

  • 1.
    Paradigmas de Linguagemde ProgramaçãoProf. Péricles Mirandapericlesmiranda@gmail.com
  • 2.
  • 3.
  • 4.
    Tipos em HaskellHaskellpossui:Tipos PrimitivosTipos Compostos: Criados a partir da combinação de tipos primitivos.Notação: em Haskell todos os tipos iniciam com letras maiúsculas.
  • 5.
    Tipos CompostosDefinem tiposa partir da composição de tipos existentes:Listas;Tuplas;Tipos Algébricos.
  • 6.
    ListasDefinem uma seqüênciade valores pertencentes a um mesmo tipo:[X] = lista de Valores do tipo X;[Int] = Tipo lista de inteiros;[Float] = Tipo lista de Floats;[Char] = Tipo lista de Caracteres;[[Int]] = Tipo lista de listas de Inteiros;[a] = Tipo lista polimórfica.
  • 7.
    ListasAlguns exemplos válidos:[] = Lista vazia[1,2,3] = Lista formada pelos elementos 1,2 e 3[True, True, False][ [1,2,3], [3,2] , [4,3] ]Não é permitido listas com valores de tipos diferentes:[1,True][‘a’, 2]
  • 8.
    ListasFunções de Listas:head:Retorna o primeiro elemento da lista;tail: Retorna a cauda da lista;length: Retorna o comprimento da lista;take n l: Retorna os “n” primeiros elementos da lista;(h : t) : cria uma lista a partir de uma cabeça e caudaEm Haskell Strings são definidas como listas de caracteres:“casa” == [‘c’, ‘a’, ‘s’, ‘a’]
  • 9.
    ListasValores do tipolista podem ser expressos das seguintes formas:Listagem de elementos: [1,2,3,4], [2,4,6,3];Faixa de valores:[1..10], [1,3..10];[1,3..];Compreenssão:[ x*x | x <- [1..5] ];[ x * y | x <- [1..10] , y <- [2..10] ]
  • 10.
    TuplasTipo formado peloproduto cartesiano de outros tipos (possivelmente diferentes)Notação de tipos:() = Tipo que não armazena nenhuma informação (equivalente ao void.(Int, Int) = Par de inteiros(Int, Int, Int) = Trinca de inteiros(Float, Int) = Par formado por um Float seguido por um inteiro.([Int], Char) = Tupla formada por uma lista de inteiros seguido por um caracteres[(Int,Char)] = Lista de pares inteiro X caractere
  • 11.
  • 12.
    Exercícios1) Somar elementosde uma Lista;2) Incrementar ‘1’ a cada elemento da lista;3) Somar elementos de tupla de dois elementos;4) Incrementar ‘1’ a elementos de tupla de dois elementos;5) Converter tupla em lista;6) Converter lista em tupla;
  • 13.
    Paradigmas de Linguagemde ProgramaçãoProf. Péricles Mirandapericlesmiranda@gmail.com