tdc2017 | poa trilha programcao funcional - paradigma funcional até leigos podem entender
TRANSCRIPT
![Page 1: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/1.jpg)
Paradigma funcional até leigos podem
entender
THE DEVELOPER’S CONFERENCE 2017
![Page 2: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/2.jpg)
Leonardo AmarilhoSoftware Engineer | Agile Coach
github.com/leopoa
linkedin.com/in/leonardo-amarilho
Hello!
![Page 3: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/3.jpg)
Observação:
Precisamos entender que o paradigma funcional é diferente!!!
Paradigma FuncionalO objetivo do funcional é imitar as funções matemáticas na maior extensão possível.
Benefícios:- Sem side-effect- Imutabilidade- Lazy evaluation
![Page 4: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/4.jpg)
Se f é a função
então, a função h é
essa é uma versão currying de f
Currying Definição:
![Page 5: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/5.jpg)
Se f é a função
então, a função h é
essa é uma versão currying de f
Currying Definição:
![Page 6: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/6.jpg)
Transforma uma função com muitos argumentos, para que possa ser chamada como uma cadeia de funções de argumento único
Depois de aplicar currying...
![Page 7: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/7.jpg)
Imagine como um mecânico descreveria um carro...
![Page 8: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/8.jpg)
Ele dividiria o carro em pedaços menores, as peças. Explicaria que a união dessas peças formam o carro.
Uma maneira bem detalhada de explicar
Visão do mecânico
![Page 9: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/9.jpg)
Partial ApplicationAplicação parcial envolve passar menos argumentos para uma função que recebe múltiplos argumentos. Esse processo cria uma nova função que recebe menos argumentos.
![Page 10: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/10.jpg)
Você, que não é um engenheiro mecânico, tivesse que explicar o que é um carro.
Dessa maneira seria difícil e complicado.
Agora imagine
![Page 11: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/11.jpg)
Muito mais simples falar que o carro tem: - Motor- Volante - 4 rodas - Bateria - etc...
Você não entrou em muitos detalhes, mesmo assim explicou o que é um carro.
Partial Application
![Page 12: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/12.jpg)
List Comprehension
É uma construção sintática, inspirada na compressão de conjuntos
É uma maneira concisa de manipular / construir uma lista
Porque usar?- É otimizado- É funcional- Reduzir tamanho de código
![Page 13: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/13.jpg)
![Page 14: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/14.jpg)
![Page 15: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/15.jpg)
Neste problema, você deverá exibir uma lista de 1 a 20, um em cada linha, com as seguintes exceções:
- Números divisíveis por 3 deve aparecer como 'Fizz' ;
- Números divisíveis por 5 devem aparecer como 'Buzz' ;
- Números divisíveis por 3 e 5 devem aparecer como 'FizzBuzz' ao invés do número'.
Puzzle FizzBuzzHaskell
![Page 16: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/16.jpg)
Ainda ficou com dúvidas?
![Page 17: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/17.jpg)
Você é conservador
✗ Não gosta de aprender
✗ Nova tendência
✗ Esperar amadurecer
![Page 18: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/18.jpg)
Orientação Objeto
int total = 0;for elem in elems {
total += elem;}return total;
Funcional
(0...10).sum();
elems.sum();
Desenvolvedor bom é pago por linha de código
![Page 19: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/19.jpg)
Símbolos estranhos
->::
Conceitos Obscuros
CurryingMonads
Símbolos óbvios
!=++
Conceitos fáceis
HerançaPolimorfismo
Diferenças conceituais
![Page 20: TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos podem entender](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a648ffa7f8b9a27568b67c7/html5/thumbnails/20.jpg)
Leonardo AmarilhoSoftware Engineer | Agile Coach
github.com/leopoa
linkedin.com/in/leonardo-amarilho
Thanks!