@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