8 paradigma funcional usando haskell

9

Click here to load reader

Transcript of 8 paradigma funcional usando haskell

Page 1: 8 paradigma funcional usando haskell

Paradigmas de Linguagens de Programação

Prof. Péricles Miranda

[email protected]

Page 2: 8 paradigma funcional usando haskell

Paradigma Funcional usando Haskell

Page 3: 8 paradigma funcional usando haskell

Funções de Alta Ordem

Page 4: 8 paradigma funcional usando haskell

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”.

Page 5: 8 paradigma funcional usando haskell

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.

Page 6: 8 paradigma funcional usando haskell

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

Page 7: 8 paradigma funcional usando haskell

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 )

Page 8: 8 paradigma funcional usando haskell

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

Page 9: 8 paradigma funcional usando haskell

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.