Buscar

Minicurso de Haskell Hora 4

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

Continue navegando