Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Monads na prática - QConSP 2014
Search
Breno Ferreira
April 09, 2014
Programming
0
98
Monads na prática - QConSP 2014
Breno Ferreira
April 09, 2014
Tweet
Share
More Decks by Breno Ferreira
See All by Breno Ferreira
TDC Globo Sistemas Distribuídos
brenoferreira
1
54
Trabalho Remoto TDC Globo 2020
brenoferreira
1
72
Immutable Da
brenoferreira
0
48
Remote Work
brenoferreira
0
53
Fun with Types
brenoferreira
0
200
RxJava
brenoferreira
1
350
.NET Além do Mundo Microsoft
brenoferreira
0
68
TDC2013 - Programação assíncrona com Javascript
brenoferreira
1
510
TDD com Javascript
brenoferreira
1
450
Other Decks in Programming
See All in Programming
REALITY コマンド作成チュートリアル
nishiuriraku
0
120
Ruby on Railroad: The Power of Visualizing CFG
ydah
0
290
Boost Your Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
760
Empowering Developers with HTML-Aware ERB Tooling @ RubyKaigi 2025, Matsuyama, Ehime
marcoroth
2
960
Rubyの!メソッドをちゃんと理解する
alstrocrack
1
120
Bedrock × Confluenceで簡単(?)社内RAG
iharuoru
1
110
Cursorを活用したAIプログラミングについて 入門
rect
0
160
Golangci-lint v2爆誕: 君たちはどうすべきか
logica0419
1
230
開発者フレンドリーで顧客も満足?Platformの秘密
algoartis
0
160
Jakarta EE Meets AI
ivargrimstad
0
780
「理解」を重視したAI活用開発
fast_doctor
0
270
State of Namespace
tagomoris
5
2.4k
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
41
2.3k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
690
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
[RailsConf 2023] Rails as a piece of cake
palkan
54
5.5k
Facilitating Awesome Meetings
lara
54
6.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
105
19k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Building Adaptive Systems
keathley
41
2.5k
Transcript
MONADS NA PRÁTICA @breno_ferreira Breno Ferreira
PROGRAMAÇÃO FUNCIONAL É ASSUSTADOR Functors Monoids Catamorphism MONAD
PROGRAMAÇÃO FUNCIONAL É POUCO FAMILIAR Functors Monoids Catamorphism MONAD
PROGRAMAÇÃO FUNCIONAL É POUCO FAMILIAR Mappables Monoids Catamorphism MONAD
PROGRAMAÇÃO FUNCIONAL É POUCO FAMILIAR Mappables Monoids Aggregatables MONAD
PROGRAMAÇÃO FUNCIONAL É POUCO FAMILIAR Mappables Composables Aggregatables MONAD
PROGRAMAÇÃO FUNCIONAL É POUCO FAMILIAR Mappables Composables Aggregatables Chainable
ORIENTAÇÃO A OBJETO É ASSUSTADOR! Polimorfismo Herança Variancia interfaces SOLID
SRP, OCP, LSP, ISP, DIP IoC, DI, MVC, ORM, GoF, PoEAA…
ORIENTAÇÃO A OBJETO É ASSUSTADOR! Polimorfismo Herança Variancia interfaces SOLID
SRP, OCP, LSP, ISP, DIP IoC, DI, MVC, ORM, GoF, PoEAA…
MAS O QUE É UMA MONAD?
MAS O QUE É UMA MONAD? A monad is just
a monoid in the category of endofunctors. James Iry http://james-iry.blogspot.com.br/2009/05/brief-incomplete-and-mostly-wrong.html
DEFINIÇÃO DE UMA MONAD type Monad return :: a ->
m a (>>=) :: m a -> (a -> m b) -> m b
TRADUÇÃO interface Monad<A> static Create(value: A): Monad<A> flatMap(mapper: A ->
Monad<B>): Monad<B>
MAS PARA QUE AS MONADS SÃO ÚTEIS? • Nulls •
Exceptions • Assincronia • Reactive Programming • Mutable state • etc…
HTTPS://GITHUB.COM/BRENOFERREIRA/CSHARP.FUN
OBRIGADO! @breno_ferreira