Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Te lo explico así nomás: Comónadas

Te lo explico así nomás: Comónadas

La Programación Funcional ha ganado tracción en los últimos años. Muchos programadores se han familiarizado con funciones de orden superior como `map`, `reduce` y `filter` en el lenguaje de su preferencia. Sin embargo, en esta presentación veremos conceptos más complejos y patrones que los usan siendo aplicados a herramientas populares como React y Redux.

Presentador: Juan Carlos Paucar.

Quito Lambda

November 27, 2019
Tweet

More Decks by Quito Lambda

Other Decks in Programming

Transcript

  1. Hace bocha de muchos años - Finales de los 50s

    (John McCarthy, LISP) - 1977 (John Backus, FP)
  2. Programación Funcional Conceptos Fundamentales - Funciones de orden superior -

    Funciones Puras - Recursión - Evaluación estricta - Sistemas de Tipos - Transparencia Referencial - Estructuras de datos puramente funcionales
  3. Beginner - Competent - Datos inmutables - Funciones de Orden

    Superior - Destructuring - Composición de funciones - Funciones como ciudadanos de primera clase / Lambdas - Tipos algebraicos - Pattern Matching - Polimorfismo paramétrico - Recursión general - Typeclassses, Instancias y Leyes - Abstracciones de Bajo nivel (Equal, Semigroup, Monoid) - Transparencia Referencias - Totalidad - Aplicación parcial de funciones, Currying, point-free
  4. Avanzado - Experto - GADTs - Higher-Kinded Types - Rank-N

    Types - Folds & Unfolds - Higher-Order Abstractions (Category, Functor, Monad) - Basic Optics - Efficient Persistent Data Structure - Existential Types - Embedded DSL using combinators - Codata - (Co) Recursion Schemes - Advanced Optics - Dual Abstractions (Comonad) - Monad Transformers - Free Monads & Extensible Effects - Functional Architecture - Advanced Functors - Embedded DSLs using GADTs - Final Tagless - Type families, Functional dependencies
  5. Sí, todavía más - High Performance - Kind Polymorphism -

    Generic Programming - Type-Level pRogramming - Dependent-Types, Singleton Types - Category Theory - Graph Reduction - Higher-Order Abstract Syntax - Compiler Design For Functional Languages - Profunctor optics
  6. “Programación Funcional trata una computación como una evaluación de funciones

    matemáticas y evita cambiar el estado o mutar datos”
  7. Comonadas Una Comonada representa un desdoblamiento (lazy) de todos los

    futuros estados posibles de una interfaz, así como las transiciones permitidas entre esos estados.
  8. extend & duplicate La función “extract” retorna un valor para

    el estado actual. La función “duplicate” reemplaza cada futuro estado con su propia estructura de estados futuros.
  9. Moore Machines - Máquinas de estado finito - Las transiciones

    están restringidas. Para cambiar entre un estado u otro, el usuario debe proveer una entrada de tipo `i`
  10. Equivalentes • Strategy → Functor • Singleton → Applicative •

    Pipeline → Monad • NullObject → Maybe Monad • Interpreter → Reader Monad • Aspect Weaving → Monad Transformers • Composite → SemiGroup → Monoid • Visitor → Foldable • Iterator → Traversable • The Pattern behind the Patterns → Category • Fluent Api → Comonad