Slide 1

Slide 1 text

@onielfadev [email protected] Javier Onielfa Belenguer Programación Funcional: ¡La usabas y no lo sabías! 1 lunes 21 de octubre de 13

Slide 2

Slide 2 text

@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

Slide 3

Slide 3 text

@onielfadev Javier Onielfa Belenguer Lambda Calculus 3 Lenguaje de programación Lambda Calculus Menos abstracciones Perdida de rendimiento lunes 21 de octubre de 13

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

f(x) = x+1 @onielfadev Javier Onielfa Belenguer Programación Funcional Una función simple: 5 lunes 21 de octubre de 13

Slide 6

Slide 6 text

@onielfadev Javier Onielfa Belenguer Programación Funcional 6 ¡¡Haskell REPL FTW!! ¡¡Aprendamos !! lunes 21 de octubre de 13

Slide 7

Slide 7 text

@onielfadev Javier Onielfa Belenguer Haskell is useless Haskell is useless. 7 lunes 21 de octubre de 13

Slide 8

Slide 8 text

@onielfadev Javier Onielfa Belenguer Haskell is useless http://www.youtube.com/watch?v=iSmkqocn0oQ 8 lunes 21 de octubre de 13

Slide 9

Slide 9 text

@onielfadev Javier Onielfa Belenguer Haskell is useless 9 lunes 21 de octubre de 13

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

@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

Slide 12

Slide 12 text

@onielfadev Javier Onielfa Belenguer Programación funcional en el mundo real 12 ; es un MONAD lunes 21 de octubre de 13

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

@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

Slide 15

Slide 15 text

@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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

@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

Slide 18

Slide 18 text

@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

Slide 19

Slide 19 text

@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

Slide 20

Slide 20 text

@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

Slide 21

Slide 21 text

@onielfadev Javier Onielfa Belenguer Programación funcional en el mundo real 21 LINQ lunes 21 de octubre de 13

Slide 22

Slide 22 text

@onielfadev Javier Onielfa Belenguer Programación funcional en el mundo real 22 JAVA 8 lunes 21 de octubre de 13

Slide 23

Slide 23 text

@onielfadev Javier Onielfa Belenguer Programación funcional en el mundo real 23 Muchas gracias lunes 21 de octubre de 13

Slide 24

Slide 24 text

@onielfadev Javier Onielfa Belenguer Programación funcional en el mundo real 24 ¿Más preguntas? lunes 21 de octubre de 13

Slide 25

Slide 25 text

@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