Slide 1

Slide 1 text

MONADS NA PRÁTICA @breno_ferreira Breno Ferreira

Slide 2

Slide 2 text

PROGRAMAÇÃO FUNCIONAL É ASSUSTADOR Functors Monoids Catamorphism MONAD

Slide 3

Slide 3 text

PROGRAMAÇÃO FUNCIONAL É POUCO FAMILIAR Functors Monoids Catamorphism MONAD

Slide 4

Slide 4 text

PROGRAMAÇÃO FUNCIONAL É POUCO FAMILIAR Mappables Monoids Catamorphism MONAD

Slide 5

Slide 5 text

PROGRAMAÇÃO FUNCIONAL É POUCO FAMILIAR Mappables Monoids Aggregatables MONAD

Slide 6

Slide 6 text

PROGRAMAÇÃO FUNCIONAL É POUCO FAMILIAR Mappables Composables Aggregatables MONAD

Slide 7

Slide 7 text

PROGRAMAÇÃO FUNCIONAL É POUCO FAMILIAR Mappables Composables Aggregatables Chainable

Slide 8

Slide 8 text

ORIENTAÇÃO A OBJETO É ASSUSTADOR! Polimorfismo Herança Variancia interfaces SOLID SRP, OCP, LSP, ISP, DIP IoC, DI, MVC, ORM, GoF, PoEAA…

Slide 9

Slide 9 text

ORIENTAÇÃO A OBJETO É ASSUSTADOR! Polimorfismo Herança Variancia interfaces SOLID SRP, OCP, LSP, ISP, DIP IoC, DI, MVC, ORM, GoF, PoEAA…

Slide 10

Slide 10 text

MAS O QUE É UMA MONAD?

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

DEFINIÇÃO DE UMA MONAD type Monad return :: a -> m a (>>=) :: m a -> (a -> m b) -> m b

Slide 13

Slide 13 text

Slide 14

Slide 14 text

MAS PARA QUE AS MONADS SÃO ÚTEIS? • Nulls • Exceptions • Assincronia • Reactive Programming • Mutable state • etc…

Slide 15

Slide 15 text

HTTPS://GITHUB.COM/BRENOFERREIRA/CSHARP.FUN

Slide 16

Slide 16 text

OBRIGADO! @breno_ferreira