MSP Tech Days
Programação
Funcional
F#
Gustavo Bellini
Bigardi
Desenvolvedor .NET
Java, GoLang, JS
https://about.me/gbb
igardi/
Programação Funcional
Novo paradigma
Mais um...............
No paradigma funcional eu não dito ao meu
código o que ele deve fazer, quando e como. Não
irei desenvolvê-lo passo a passo. Eu penso meu
código como uma sequência de funções e/ou
passos, as quais de maneira composta irão
resolver meu problema.
f(x) -> f(y) -> f(z) -> f(n)...
Metáfora do lenhador
Funções puras
Uma função pura é aquela que não provoca
efeitos colaterais, ou seja, ela não muda
qualquer estado na aplicação. Mas não é só isto,
ela precisa sempre gerar o mesmo resultado com
os mesmos argumentos, ou seja, ela precisa ser
completamente determinística.
ElevarNumberoAoQuadrado(int x)
SomarUmAoNumero(int x)
Na programação funcional, desenvolvemos
funções lidando com os parâmetros de
entrada e gerando resultados, sem
alterarmos o estado de coisas preexistentes
no programa
Imutabilidade quer dizer
Previsibilidade!
Programas previsíveis significam
programas que os processadores
vão lidar melhor
Entenda comigo: se eu sei que, ao
invocar essa função, eu terei um
número de retorno, eu sei que irei
lidar com números. E se eu for
passar para um outra função um
número, mas ela espera uma string,
eu já logo acuso um erro.
Isso faz com que seu
programa se torne mais
inteligente!
Thanks!
Abstração acima de tudo!
Primeiramente, o que seria, em
termos de código, uma abstração?
A implementação de uma função
para um determinado bloco de
código a ser utilizado e reutilizado.
Quais as vantagens da abstração?
• Você estará reaproveitando código. Menos código com mais
informações. Isso é bom.
• O processo todo em que as funções foram abstraídas irão fazer
sentido para você. Isso, alinhado com um bom nome para as funções,
deixarão o seu código muito legível e de fácil compreensão.
• E aí vem a parte legal. Lembre-se quando falei sobre a inteligência do
código... Seu processador já vai saber que dado um número 6, ele
terá como retorno um número 5. A previsibilidade aqui faz a festa.
Benefícios
• Imutabilidade;
• Maior previsibilidade no comportamento;
• Facilidade de extensão;
• Melhora na testabilidade;
Desafios
• Maneira de pensar e projetar diferente;
• Exige adaptação ao dia-a-dia;
• Algumas linguagens ainda não são 100% adequadas;
F#
O F# é a resposta da
Microsoft para o
paradigma funcional
dentro de plataforma
.NET
F# é uma linguagem bastante
concisa e o código possui pouco
ruído. Ou seja, parênteses são
pouco utilizados, blocos de código
são separados por indentação, não
utiliza chaves e a quebra de linhas,
por si só, já é o delimitador.
Características bastante importantes e decisivas na
escolha do F# como linguagem são:
• Concisão;
• Simplicidade;
• Facilidade;
• Proteção contra erros;
• Facilidade com paralelismo
DEMO
https://github.com/gustavobigardi/demo-
fsharp-msp-tech-days
MSP Tech Days 2018 - Programação Funcional com F#

MSP Tech Days 2018 - Programação Funcional com F#