A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programação Funcional

Apresentações semelhantes


Apresentação em tema: "Programação Funcional"— Transcrição da apresentação:

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


Carregar ppt "Programação Funcional"

Apresentações semelhantes


Anúncios Google