tdc2017 | poa trilha programcao funcional - paradigma funcional até leigos podem entender

Post on 21-Jan-2018

36 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Paradigma funcional até leigos podem

entender

THE DEVELOPER’S CONFERENCE 2017

Leonardo AmarilhoSoftware Engineer | Agile Coach

leo.poa@gmail.com

github.com/leopoa

linkedin.com/in/leonardo-amarilho

Hello!

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

Se f é a função

então, a função h é

essa é uma versão currying de f

Currying Definição:

Se f é a função

então, a função h é

essa é uma versão currying de f

Currying Definição:

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

Imagine como um mecânico descreveria um carro...

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

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.

Você, que não é um engenheiro mecânico, tivesse que explicar o que é um carro.

Dessa maneira seria difícil e complicado.

Agora imagine

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

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

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

Ainda ficou com dúvidas?

Você é conservador

✗ Não gosta de aprender

✗ Nova tendência

✗ Esperar amadurecer

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

Símbolos estranhos

->::

Conceitos Obscuros

CurryingMonads

Símbolos óbvios

!=++

Conceitos fáceis

HerançaPolimorfismo

Diferenças conceituais

Leonardo AmarilhoSoftware Engineer | Agile Coach

leo.poa@gmail.com

github.com/leopoa

linkedin.com/in/leonardo-amarilho

Thanks!

top related