8 paradigma funcional usando haskell
Click here to load reader
-
Upload
pericles-miranda -
Category
Documents
-
view
945 -
download
0
Transcript of 8 paradigma funcional usando haskell
Paradigma Funcional usando Haskell
Funções de Alta Ordem
Princípio de Uniformidade de Tipos
• Uma linguagem (na medida do possível) nãodeve restringir as operações que podem serrealizadas sobre valores de um tipo;
• Se em uma linguagem certos tipos nãopossuem toda a flexibilidade oferecida aoutros tipos, dizem que estes tipos são tiposde “Segunda Ordem”.
Funções de Alta Ordem
• Linguagens funcionais possuem o conceito defunções de alta ordem pois as funções são tiposque podem ser manipulados como quaisqueroutros tipos da linguagem:
– Funções podem ser passadas como argumentos de outras funções;
– Funções podem ser retornadas como resultados de outras funções;
– Funções podem ser construídas dinamicamente.
Tipo Função
• Notação:a −> b: Função que recebe argumentos do tipo a e retorna valores do tipo b.
• Valores: Expressões lambda:\x −> x + 1\y −> \x −> x + y
• Aplicação de função:f 1g x y
Funções como argumento/resultado de funções
t e s t e : : ( Int −> Int ) −> Int
t e s t e f = f 2
func : : Int −> ( Int −> Int )
func n = \x −> x + n
twi c e : : ( Int −> Int ) −> ( Int −> Int )
twi c e f = \x −> f ( f x )
Funções Importantes
• map : : ( a −> b ) −> * a + −> * b +
• f i l t e r : : ( a −> Bool ) −> * a + −> * a +
• takeWhi le : : ( a −> Bool ) −> * a + −> * a +
• dropWhi le : : ( a −> Bool ) −> * a + −> * a +
• f o l d l : : ( a −> b −> a ) −> a −> * b + −> a
• f o l d r : : ( a −> b −> b ) −> b −> * a + −> b
Vamos Praticar?
• A função fn(x);
• Adicionar ‘n’ a cada elemento da lista;
• Filtrar apenas elementos pares de uma lista de inteiros;
• Somar todos os elementos da lista;
OBS: Usando-se conceito de FAA.