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
79
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
32
Trabalho Remoto TDC Globo 2020
brenoferreira
1
53
Immutable Da
brenoferreira
0
33
Remote Work
brenoferreira
0
43
Fun with Types
brenoferreira
0
130
RxJava
brenoferreira
1
280
.NET Além do Mundo Microsoft
brenoferreira
0
55
TDC2013 - Programação assíncrona com Javascript
brenoferreira
1
420
TDD com Javascript
brenoferreira
1
350
Other Decks in Programming
See All in Programming
Designing for tomorrow's programming workflows
honnibal
PRO
2
130
GitHub Actionsで泣かないためにやっておきたい設定 / Recommended GHA settings to avoid crying
pinkumohikan
3
530
Anthropic Cookbook のおすすめレシピ
schroneko
7
900
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
670
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
230
Elm Form Validation
bkuhlmann
0
510
MicrosoftのPlatform Engineeringガイドを読んで実際になにかやってみた
ymd65536
1
300
ADRを一年運用してみた/adr_after_a_year
hanhan1978
7
2.3k
try!Swift Tokyo 2024 参加報告 LT
akidon0000
1
220
見た目から始める生産性向上
ikumatadokoro
7
830
1BRC--Nerd Sniping the Java Community
gunnarmorling
0
340
Random\Randomizer クラスで日常のあれこれを解決しよう! / Random\Randomizer class solves familiar trouble
cocoeyes02
0
220
Featured
See All Featured
Side Projects
sachag
451
41k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
659
120k
Building Your Own Lightsaber
phodgson
99
5.7k
Build The Right Thing And Hit Your Dates
maggiecrowley
24
2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
14
1.6k
Bash Introduction
62gerente
604
210k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
30
6k
Building an army of robots
kneath
300
41k
Docker and Python
trallard
34
2.7k
A Tale of Four Properties
chriscoyier
151
22k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Design by the Numbers
sachag
274
18k
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