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
130
0
Share
Monads na prática - QConSP 2014
Breno Ferreira
April 09, 2014
More Decks by Breno Ferreira
See All by Breno Ferreira
TDC Globo Sistemas Distribuídos
brenoferreira
1
100
Trabalho Remoto TDC Globo 2020
brenoferreira
1
120
Immutable Da
brenoferreira
0
97
Remote Work
brenoferreira
0
100
Fun with Types
brenoferreira
0
240
RxJava
brenoferreira
1
410
.NET Além do Mundo Microsoft
brenoferreira
0
97
TDC2013 - Programação assíncrona com Javascript
brenoferreira
1
570
TDD com Javascript
brenoferreira
1
520
Other Decks in Programming
See All in Programming
CSC307 Lecture 17
javiergs
PRO
0
240
次世代リンターで探る、tsgo 時代における型認識カスタムルールの現実解
ytakahashii
1
1k
3Dシーンの圧縮
fadis
1
330
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
290
AI Agent と正しく分析するための環境作り
yoshyum
3
610
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
570
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
150
Modding RubyKaigi for Myself
yui_knk
0
470
1人1案件のプロダクトエンジニア時代に、"プロセス監督"としてチャレンジしたこと
non0113
0
330
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
130
SPMマルチモジュールで テストカバレッジを取得する技法
yosshi4486
0
120
The Arts and Crafts of Work in the AI Era — Toward Mastery in Software Development
kuranuki
0
450
Featured
See All Featured
Speed Design
sergeychernyshev
33
1.7k
Music & Morning Musume
bryan
47
7.2k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
310
Git: the NoSQL Database
bkeepers
PRO
432
67k
Leo the Paperboy
mayatellez
7
1.8k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
150
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
340
Building AI with AI
inesmontani
PRO
1
1k
GitHub's CSS Performance
jonrohan
1033
470k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
44k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
400
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