7 paradigma funcional usando haskell
TRANSCRIPT
Paradigma Funcional usando Haskell
Listas e Tuplas
Tipos em Haskell
• Haskell possui:
– Tipos Primitivos
– Tipos Compostos: Criados a partir da combinação de tipos primitivos.
• Notação: em Haskell todos os tipos iniciam com letras maiúsculas.
Tipos Compostos
• Definem tipos a partir da composição de tipos existentes:
– Listas;
– Tuplas;
– Tipos Algébricos.
Listas
• Definem 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.
Listas
Alguns 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 tiposdiferentes:
[1,True][‘a’, 2]
Listas
• Funçõ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 cauda
• Em Haskell Strings são definidas como listas de caracteres:– “casa” == [‘c’, ‘a’, ‘s’, ‘a’]
Listas
Valores do tipo lista podem ser expressos das seguintesformas:
• 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] ]
Tuplas
Tipo 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ícios
1) 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;