4. 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.
5. Tipos Compostos Definem tipos a partir da composição de tipos existentes: Listas; Tuplas; Tipos Algébricos.
6. 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.
7. 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 tipos diferentes: [1,True] [‘a’, 2]
8. 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’]
9. Listas Valores 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] ]
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
12. 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;