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
110
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
74
Trabalho Remoto TDC Globo 2020
brenoferreira
1
89
Immutable Da
brenoferreira
0
71
Remote Work
brenoferreira
0
76
Fun with Types
brenoferreira
0
210
RxJava
brenoferreira
1
380
.NET Além do Mundo Microsoft
brenoferreira
0
75
TDC2013 - Programação assíncrona com Javascript
brenoferreira
1
540
TDD com Javascript
brenoferreira
1
490
Other Decks in Programming
See All in Programming
開発生産性が組織文化になるまでの軌跡
tonegawa07
0
190
Claude Code on the Web を超える!? Codex Cloud の実践テク5選
sunagaku
0
610
AIと協働し、イベントソーシングとアクターモデルで作る後悔しないアーキテクチャ Regret-Free Architecture with AI, Event Sourcing, and Actors
tomohisa
2
9.6k
All(?) About Point Sets
hole
0
220
Stay Hacker 〜九州で生まれ、Perlに出会い、コミュニティで育つ〜
pyama86
2
2.7k
AIの弱点、やっぱりプログラミングは人間が(も)勉強しよう / YAPC AI and Programming
kishida
13
5.4k
TypeScript 5.9 で使えるようになった import defer でパフォーマンス最適化を実現する
bicstone
1
500
JJUG CCC 2025 Fall: Virtual Thread Deep Dive
ternbusty
3
490
モデル駆動設計をやってみよう Modeling Forum2025ワークショップ/Let’s Try Model-Driven Design
haru860
0
190
レイトレZ世代に捧ぐ、今からレイトレを始めるための小径
ichi_raven
0
470
Evolving NEWT’s TypeScript Backend for the AI-Driven Era
xpromx
0
200
なあ兄弟、 余白の意味を考えてから UI実装してくれ!
ktcryomm
5
1.5k
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Designing for Performance
lara
610
69k
Building Adaptive Systems
keathley
44
2.8k
Docker and Python
trallard
46
3.7k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Building Applications with DynamoDB
mza
96
6.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
Speed Design
sergeychernyshev
33
1.3k
Visualization
eitanlees
150
16k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
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