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

Programación funcional - Codemotion Madrid 2013

Programación funcional - Codemotion Madrid 2013

La programación funcional está influenciando frameworks y lenguajes. En esta charla se explicará programación funcional, usando Haskell y sus conceptos como transparencia referencial, inmutabilidad, ausencia de estado, recursión, list comprehension, monads y lazy evaluation. Finalmente se verá como estos conceptos ya los estáis utilizando como Javascript, promesas, LINQ, excepciones, Java 8 o Map/Reduce. Verás nuevos patrones donde antes solo había código espagueti.

Javier Onielfa

October 18, 2013
Tweet

More Decks by Javier Onielfa

Other Decks in Programming

Transcript

  1. @onielfadev Javier Onielfa Belenguer Máquina de Turing 2 Máquina de

    Turing Lenguaje de programación Más abstracciones Sin perdida de rendimiento lunes 21 de octubre de 13
  2. @onielfadev Javier Onielfa Belenguer Lambda Calculus 3 Lenguaje de programación

    Lambda Calculus Menos abstracciones Perdida de rendimiento lunes 21 de octubre de 13
  3. e ::= x @onielfadev Javier Onielfa Belenguer Lambda Calculus 4

    | λx.e | e e Variables Función Aplicación de Función lunes 21 de octubre de 13
  4. @onielfadev Javier Onielfa Belenguer Programación funcional en el mundo real

    10 Veamos algunos ejemplos. lunes 21 de octubre de 13
  5. @onielfadev Javier Onielfa Belenguer Programación funcional en el mundo real

    11 function calculo(x) { console.log(“Hola”); var r = x*2; console.log(“Adios”); return 5; } lunes 21 de octubre de 13
  6. @onielfadev Javier Onielfa Belenguer Programación funcional en el mundo real

    13 Las excepciones son un MONAD lunes 21 de octubre de 13
  7. @onielfadev Javier Onielfa Belenguer Programación funcional en el mundo real

    14 resul = [x*2 for x in [1,2,3] if x <=2] Python list-comprehensions lunes 21 de octubre de 13
  8. @onielfadev Javier Onielfa Belenguer Programación funcional en el mundo real

    15 resul = [x*2 for x in [1,2,3] if x <=2] Python list-comprehensions resul = map (*2) $ filter (\x-> x<=2) [1,2,3] lunes 21 de octubre de 13
  9. @onielfadev Javier Onielfa Belenguer Programación funcional en el mundo real

    16 Google no inventó Map/Reduce. lunes 21 de octubre de 13
  10. @onielfadev Javier Onielfa Belenguer Programación funcional en el mundo real

    17 var saludo = function(){ console.log(“Hola Codemotion”); } setTimeout(saludo, 1000); Callbacks lunes 21 de octubre de 13
  11. @onielfadev Javier Onielfa Belenguer Programación funcional en el mundo real

    18 var saludo = function(){ console.log(“Hola Codemotion”); } setTimeout(saludo, 1000); Las funciones son first-class citizens. lunes 21 de octubre de 13
  12. @onielfadev Javier Onielfa Belenguer Programación funcional en el mundo real

    19 var apireq = consultaAPI(“/users”); apireq.then(process) .then(getName) .then(printNames) Promesas lunes 21 de octubre de 13
  13. @onielfadev Javier Onielfa Belenguer Programación funcional en el mundo real

    20 Las promesas también son un MONAD. lunes 21 de octubre de 13
  14. @onielfadev Javier Onielfa Belenguer Programación funcional en el mundo real

    25 http://www.haskell.org http://www.haskell.org/hoogle/ Learn you a haskell for great good. http://www.scala-lang.org/ lunes 21 de octubre de 13