Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Programação Funcional
Prof. Carlos Alberto
2
Haskell: Classes Prof. Carlos Alberto
3
Polimorfismo Polimorfismo em Haskell procura generalizar o tipo de uma função; Expressões de tipos polimórficos descrevem famílias de tipos; Ao usar polimorfismo, as definições das funções tornam-se genéricas.
4
Polimorfismo Exemplo 01
5
Polimorfismo Com tipos polimórficos, alguns tipos estão em uma hierarquia. Ex.: o tipo [a] é mais geral que [char] Funções polimórficas aceitam mais de um tipo de dado como argumento. Ex.: a função head Funções monomórficas aceitam somente um tipo de argumento. Ex.: somaLista :: [Int] -> [Int]
6
Polimorfismo Polimorfismo ad hoc
Algumas funções aceitam alguns tipos de argumentos e rejeitam outros. Elas possuem polimorfismo restrito. Ex.: função de adição (+) pode ser aplicada a valores Int, Float, mas não ao tipo Char. Para tratar esse tipo de polimorfismo, haskell agrupa os tipos em classes.
7
Polimorfismo Uma classe define as funções que podem ser aplicadas ao tipo (métodos da classe). Ex.: A classe Eq (Equality Class) é o conjunto de tipos em que os operadores “==” e “/=” são definidos:
8
Polimorfismo Os operadores relacionais “==” e “/=” podem comparar uma família de tipos que estão sob uma classe mais geral : tipo “a”
9
Polimorfismo Criando uma instância
Não pode usar o método “==”, pois a expressão não pertence à classe Eq.
10
Polimorfismo Criando uma instância
Solução simples: criar uma função para fazer a comparação.
11
Polimorfismo Criando uma instância
A partir da função “iguala” é possível instanciar o tipo NomeCompleto na classe Eq.
12
Polimorfismo Criando uma instância
Outra maneira é derivando uma classe
13
Classes Derivadas Haskell suporta o conceito de extensão de classe ou derivação de classe (deriving class). Além de ter suas próprias funções, é possível uma classe herdar funções de uma classe superior. Um exemplo de classe derivada é a Ord, que herda todos os métodos da classe Eq.
14
Classes Derivadas No exemplo a seguir, a classe Eq é uma superclasse de Ord; Qualquer tipo que seja instância de Ord deve também ser uma instância de Eq.
15
Hierarquia de Classes
16
Classes Criando uma classe Instanciando uma classe
17
Classes Outras instancias da classe
18
Classes Outras instancias da classe
19
Herança Múltipla Haskell permite o conceito de herança múltipla
20
Haskell: Classes Prof. Carlos Alberto
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.