Slide 1

Slide 1 text

Programação funcional com Haskell

Slide 2

Slide 2 text

O que é programação funcional A programação funcional baseia-se no conceito matemático de função, em que para cada elemento do seu conjunto domínio (entrada) há apenas um elemento no seu conjunto contra-domínio (saída).

Slide 3

Slide 3 text

Por que programação funcional?

Slide 4

Slide 4 text

Por que Haskell ?

Slide 5

Slide 5 text

História do Haskell Na conferência Linguagens de Programação Funcional e Arquitetura da Computação em 1987, Portland, Oregon, os participantes formaram um comitê para definir um padrão aberto para linguagens de programação funcional.

Slide 6

Slide 6 text

Usos de Haskell ● Facebook, backend para frontenders ● Google Ganeti, gerenciamento de clusters ● Intel, compilador para Haskell em estudos sobre paralelismo

Slide 7

Slide 7 text

○ Funções puras ○ Funções de alta ordem ○ Pattern Matching ○ Recursão ○ Guards ○ Composição de Funções As propriedades mais amadas

Slide 8

Slide 8 text

Funções puras Funções de verdade ● Sempre retornam o mesmo resultado ● Sem estado Exemplos: ● sqrt ● product ● sum

Slide 9

Slide 9 text

Funções de alta ordem Funções solidarias recebem outras funções como parâmetro Exemplos: ● map ● reduce a.k.a foldr

Slide 10

Slide 10 text

Pattern Matching Encontrando padrões Exemplos: ● factorial ● map

Slide 11

Slide 11 text

Pattern Matching S2 Recursão Fazendo recursão até encontrar padrões Exemplos: ● factorial ● map

Slide 12

Slide 12 text

Guards Esqueça os Ifs Exemplos: ● elem ● factorial

Slide 13

Slide 13 text

Composição de Funções Aplicando uma sequência de funções, sem um mundo de parênteses. Exemplos: ● cifra de cesar ● reverse words

Slide 14

Slide 14 text

Como Começar? Aprendendo a ver por outra perspectiva ● GHCI ● Learn You a Haskell for Great Good!

Slide 15

Slide 15 text

Referências ● Learning Haskell ● Getting started with Haskell

Slide 16

Slide 16 text

Curiosidades ● Lazy ● Range ● Type Classes ● List Comprehensions

Slide 17

Slide 17 text

Dúvidas ou comentários?