Baixe o app para aproveitar ainda mais
Prévia do material em texto
Minicurso de Haskell – Hora 4 Giuliana Silva Bezerra - PETCC Roteiro Casamento de padrões Classes de tipos Eq Ord Classes derivadas Algumas classes pré-definidas Erros Casamento de padrões Tuplas ( a, b, ...) Listas ( h:t ) “_” Exemplos Casamento de padrões Não se pode repetir nomes num mesmo padrão O que fazer???? Casamento de padrões Uso de case Casamento de padrões Exemplo1: Função que retorna a soma dos pares de uma lista Caso base?? Para qualquer outro caso??? Casamento de padrões Definir função mzip que agrupa duas listas de inteiros em uma única lista de pares. Caso base?? Outros casos?? NÃO! A ORDEM É IMPORTANTE!! Funciona?? Classes de tipos Uma classe em Haskell é o conjunto de tipos sobre os quais uma função é definida ( + ) -> { Int , Float , Double } ( ++ ) -> { String } Eq (equality class) Definição Classes de tipos Exemplo: ( == ) É necessário criar um definição para a função quando ela receber o tipo Arvore como argumento Classes de tipos E se eu quiser usar o operador “==” diretamente?? Uso de instance Definir novas classes e operadores A definição da função (==) será a definição da função igual quando a função (==) for usada com parâmetros do tipo Arvore Classes derivadas Classes derivadas são aquelas que ‘herdam’ de uma superclasse Exemplo: Classe ord É permitido heranças múltiplas Se um tipo pertence a ordem, então ele também pertence a Eq Classes derivadas Exemplo Eq a = contexto da função elem Pode ser omitido Essa definição está completa? Para cada tipo a que pertencer a classe Eq, a função elem tem tipo: a -> [a] -> Bool 12 Classes pré-definidas Enum Classe de tipos que podem ser enumerados De quais classes Enum é derivada?? Classes pré-definidas Exemplos Main> enumFrom 2 => [2,3, ... ] Main> enumFromThen 2 5 => [2,5,8, ... ] Main> enumFromTo 2 5 => [2,3,4, 5] Main> enumFromThenTo 1 2 8 => [1,2,3,4,5,6,7,8] Classes pré-definidas Show Read Exemplos Hugs> show(True)=> “True” Hugs> read “True” => True Classes pré-definidas Num Classe mais geral div e mod – Classe Integral (/) – Classe Fractional Classes Arquivo Prelude.hs Erros Valor indesejado função error Exemplo: Intervalo
Compartilhar