Monads na prática - QConSP 2014

Monads na prática - QConSP 2014

22cac40ebe7d9e1e7854ea9808debd7b?s=128

Breno Ferreira

April 09, 2014
Tweet

Transcript

  1. MONADS NA PRÁTICA @breno_ferreira Breno Ferreira

  2. PROGRAMAÇÃO FUNCIONAL É ASSUSTADOR Functors Monoids Catamorphism MONAD

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

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

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

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

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

  8. ORIENTAÇÃO A OBJETO É ASSUSTADOR! Polimorfismo Herança Variancia interfaces SOLID

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

    SRP, OCP, LSP, ISP, DIP IoC, DI, MVC, ORM, GoF, PoEAA…
  10. MAS O QUE É UMA MONAD?

  11. 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
  12. DEFINIÇÃO DE UMA MONAD type Monad return :: a ->

    m a (>>=) :: m a -> (a -> m b) -> m b
  13. TRADUÇÃO interface Monad<A> static Create(value: A): Monad<A> flatMap(mapper: A ->

    Monad<B>): Monad<B>
  14. MAS PARA QUE AS MONADS SÃO ÚTEIS? • Nulls •

    Exceptions • Assincronia • Reactive Programming • Mutable state • etc…
  15. HTTPS://GITHUB.COM/BRENOFERREIRA/CSHARP.FUN

  16. OBRIGADO! @breno_ferreira