programação funcional
que funciona
Talk is
cheap.
Show me the
code.
Linus Torvalds
https://github.com/serradura/request_via
+ concorrente
+ concorrente
+ consumo de memória
Um código melhor de:
desenvolver,
manter e
evoluir.
Tudo que usa blocos poderá ser
melhorado com o uso de
funções (aka: lambdas). Ex:
● Active Admin
● Concurrent Ruby
Objetivos
Porque
programação
funcional se
tornou relevante
para mim e
deveria se tornar
relevante para
você.
Porque
programação
funcional é
relevante para o
ecossistema Ruby.
Porque
programação
funcional se
tornou relevante
para mim e
deveria se tornar
relevante para
você.
Como se tornou relevante para
mim?
Resposta rápida:
Resposta não tão rápida...
if hearts, do it more
often.
Martin Fowler
Junho / 2017
Me coloquei à
disposição para
organizar o
próximo Meetup
23/06.
3 Hello Worlds
em Elm.
22/06
Junho / 2017
Entrei para
comunidade
Elm via
ElmBrasil no
Telegram
20/06.
Roadmap do
Elm, como Evan
Czaplicki
prioriza os
próximos.
(Simplicidade)
24/06
Primeiros reflexos:
Criei uma abstração
compondo funções
para gerenciar o ciclo
de vida do JS no
Turbolinks.
28/06.
Junho / 2017
Me coloquei à
disposição para
organizar o
próximo Meetup
20/06.
3 Hello Worlds
em Elm.
22/06
Entrei para
comunidade
Elm via
ElmBrasil no
Telegram
20/06.
Roadmap do
Elm, como Evan
Czaplicki
prioriza os
próximos.
(Simplicidade)
24/06
Primeiros reflexos:
Criei uma abstração
compondo funções
para gerenciar o ciclo
de vida do JS no
Turbolinks.
28/06.
Me coloquei à
disposição para
organizar o
próximo Meetup
23/06.
3 Hello Worlds
em Elm.
22/06
Entrei para
comunidade
Elm via
ElmBrasil no
Telegram
20/06.
Roadmap do
Elm, como Evan
Czaplicki
prioriza os
próximos.
(Simplicidade)
24/06
Primeiros reflexos:
Criei uma abstração
compondo funções
para gerenciar o ciclo
de vida do JS no
Turbolinks.
28/06.
Junho / 2017
Julho / 2017
Implementação
do Strong
Parameters
(Ruby) numa
abordagem
funcional.
10/07.
Julho / 2017
Implementação
do Strong
Parameters
(Ruby) numa
abordagem
funcional.
10/07.
Julho / 2017
Implementação
do Strong
Parameters
(Ruby) numa
abordagem
funcional.
10/07.
Julho / 2017
Abordagem
/Abstração
reativa (FRP)
para orquestrar
um stream de
eventos
28/07.
Julho / 2017
Implementação
do Strong
Parameters
(Ruby) numa
abordagem
funcional.
10/07.
Contribuição
para
vue-turbolinks
com direito a
variações!
20/07
Abordagem
/Abstração
reativa (FRP)
para orquestrar
um stream de
eventos
28/07.
Implementação
do Strong
Parameters
(Ruby) numa
abordagem
funcional.
10/07.
Contribuição
para
vue-turbolinks
com direito a
variações!
20/07
Julho / 2017
Agosto / 2017
Mandaram eu
ler o Mostly
Adequate
Guide to
Functional
Programming
08/08.
Agosto / 2017
Criar o DOM via
composição de
funções no estilo
Elm com jQuery e
Ramda
23/08
Mandaram eu
ler o Mostly
Adequate
Guide to
Functional
Programming
08/08.
Agosto / 2017
Criar o DOM via
composição de
funções no estilo
Elm com jQuery e
Ramda
23/08
Mandaram eu
ler o Mostly
Adequate
Guide to
Functional
Programming
08/08.
Agosto / 2017
Criar o DOM via
composição de
funções no estilo
Elm com jQuery e
Ramda
23/08
Benchmark para
comparar a
performance do uso de
Funções VS Métodos
estáticos e de instância
em Ruby
25/08.
2º ElmSP
Pagar.me
28/08
Mandaram eu
ler o Mostly
Adequate
Guide to
Functional
Programming
08/08.
Agosto / 2017
Criar o DOM via
composição de
funções no estilo
Elm com jQuery e
Ramda
23/08
Benchmark para
comparar a
performance do uso de
Funções VS Métodos
estáticos e de instância
em Ruby
25/08.
2º ElmSP
Pagar.me
28/08
Operador de
composição do
Elm no Ruby
30/08.
Mandaram eu
ler o Mostly
Adequate
Guide to
Functional
Programming
08/08.
Agosto / 2017
Criar o DOM via
composição de
funções no estilo
Elm com jQuery e
Ramda
23/08
Benchmark para
comparar a
performance do uso de
Funções VS Métodos
estáticos e de instância
em Ruby
25/08.
2º ElmSP
Pagar.me
28/08
Operador de
composição do
Elm no Ruby
30/08.
Setembro / 2017
You might not need
#reactjs, or #redux,
follows an example of
how you can do
everything with @jquery
and ES201*.
18/09.
Setembro / 2017
You might not need
#reactjs, or #redux,
follows an example of
how you can do
everything with @jquery
and ES201*.
18/09.
Setembro / 2017
You might not need
#reactjs, or #redux,
follows an example of
how you can do
everything with @jquery
and ES201*.
18/09.
Setembro / 2017
@jodosha (criador do
Hanami) publica os melhores
slides sobre Functional
Objects em Ruby que havia
visto.
27/09
30LOC to implement a
complete and
extensible EventBus in a
FP approach.
28/09
3º ElmSP
TW
28/09
You might not need
#reactjs, or #redux,
follows an example of
how you can do
everything with @jquery
and ES201*.
18/09.
Setembro / 2017
@jodosha (criador do
Hanami) publica os melhores
slides sobre Functional
Objects em Ruby que havia
visto.
27/09
30LOC to implement a
complete and
extensible EventBus in a
FP approach.
28/09
3º ElmSP
TW
28/09
Outubro / 2017
Video
Luca Guidi - @jodosha
Functional web with
Ruby
09/10.
Outubro / 2017
RequestVia 0.1.0:
A Functional HTTP Client
That Wraps Net::HTTP
30/10.
Video
Luca Guidi - @jodosha
Functional web with
Ruby
09/10.
Outubro / 2017
RequestVia 0.1.0:
A Functional HTTP Client
That Wraps Net::HTTP
30/10.
Novembro / 2017
Novembro / 2017
Programação funcional -
Hands on em diferentes
tecnologias para manjar
dos paranauê.
01/11.
Novembro / 2017
Programação funcional -
Hands on em diferentes
tecnologias para manjar
dos paranauê.
01/11.
Unleash new amazing
possibilities writing Ruby
functional objects!
10/11.
Novembro / 2017
Programação funcional -
Hands on em diferentes
tecnologias para manjar
dos paranauê.
01/11.
Unleash new amazing
possibilities writing Ruby
functional objects!
10/11.
Novembro / 2017
Programação funcional -
Hands on em diferentes
tecnologias para manjar
dos paranauê.
01/11.
Unleash new amazing
possibilities writing Ruby
functional objects!
10/11.
Novembro / 2017
Programação funcional -
Hands on em diferentes
tecnologias para manjar
dos paranauê.
01/11.
Unleash new amazing
possibilities writing Ruby
functional objects!
10/11.
Novembro / 2017
Programação funcional -
Hands on em diferentes
tecnologias para manjar
dos paranauê.
01/11.
Unleash new amazing
possibilities writing Ruby
functional objects!
10/11.
When classes are verbs, they act like functions.
compound expressions == combination of functions
Novembro / 2017
Programação funcional -
Hands on em diferentes
tecnologias para manjar
dos paranauê.
01/11.
Unleash new amazing
possibilities writing Ruby
functional objects!
10/11.
When classes are verbs, they act like functions.
compound expressions == combination of functions
Mindset funcional
Business analysis
Transformação SaídaEntrada
Definição formal de um processo
Agile
Funções???
https://en.wikipedia.org/wiki/Function_(mathematics)
Princípios de
programação funcional
em Ruby.
https://www.ruby-lang.org/en/about/#fn3
Função de alta ordem
High-order function
Função como valores
First class functions
Funções puras
Pure/Stateless functions
Recursão
Closures
Imutabilidade
If all the methods are pure functions.
The objects are data!
Functional First Development
First, code
everything you can
without using any
side effects.
Then, code your
side effects.
Functional First Development
http://dry-rb.org/
kudos.
@renanranelli@_rchaves_@arthurxavierx
@serradura
Obrigado

Programação funcional que funciona