Micro-Introduction to Functional Programming, a conceptual approach to what does means Functional Programming and how it is used and implemented in various languages.
1. Programaci´n Funcional
o
Micro-Introducci´n
o
a la
λ Programaci´n
o λ
Funcional
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 1/9
2. Programaci´n Funcional
o
Daniel Molina Wegener
http://coder.cl/
@damowe en twitter
Copyright c 2011 Daniel Molina Wegener
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 2/9
3. Tabla de Contenidos
1 Caracter´
ısticas
2 Generalidades
3 Aspectos Te´ricos
o
4 Implementacion
5 Abstracciones
6 ¿FIN?
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 3/9
4. Caracter´
ısticas
Caracter´
ısticas
¿Como se diferencian los lenguajes funcionales?
¿Puede retornar una funci´n?
o
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 4/9
5. Caracter´
ısticas
Caracter´
ısticas
¿Como se diferencian los lenguajes funcionales?
¿Puede retornar una funci´n?
o
¿Puede asignar una funci´n a una variable?
o
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 4/9
6. Caracter´
ısticas
Caracter´
ısticas
¿Como se diferencian los lenguajes funcionales?
¿Puede retornar una funci´n?
o
¿Puede asignar una funci´n a una variable?
o
¿Puede pasar funciones como par´metros?
a
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 4/9
7. Caracter´
ısticas
Caracter´
ısticas
¿Como se diferencian los lenguajes funcionales?
¿Puede retornar una funci´n?
o
¿Puede asignar una funci´n a una variable?
o
¿Puede pasar funciones como par´metros?
a
¿Tiene funciones an´nimas?
o
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 4/9
8. Caracter´
ısticas
Caracter´
ısticas
¿Como se diferencian los lenguajes funcionales?
¿Puede retornar una funci´n?
o
¿Puede asignar una funci´n a una variable?
o
¿Puede pasar funciones como par´metros?
a
¿Tiene funciones an´nimas?
o
¿Soporta recursividad?
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 4/9
9. Caracter´
ısticas
Caracter´
ısticas
¿Como se diferencian los lenguajes funcionales?
¿Puede retornar una funci´n?
o
¿Puede asignar una funci´n a una variable?
o
¿Puede pasar funciones como par´metros?
a
¿Tiene funciones an´nimas?
o
¿Soporta recursividad?
¿Tiene Clases de Tipo (Funcional)?
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 4/9
10. Caracter´
ısticas
Caracter´
ısticas
¿Como se diferencian los lenguajes funcionales?
¿Puede retornar una funci´n?
o
¿Puede asignar una funci´n a una variable?
o
¿Puede pasar funciones como par´metros?
a
¿Tiene funciones an´nimas?
o
¿Soporta recursividad?
¿Tiene Clases de Tipo (Funcional)?
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 4/9
11. Generalidades
Generalidades
Fuerte Base Te´rica
o
C´lculo Lambda, Combinatoria, Reducciones Formales
a
Teor´ de Categor´ y Sistemas de Tipos
ıa ıas
Entre otros...
Funciones como Abstraccion
Funciones como habitantes de Primera Clase
Funciones de Alto Orden
Closures, Monoids, Functors y Monads
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 5/9
12. Generalidades
Generalidades
Fuerte Base Te´rica
o
C´lculo Lambda, Combinatoria, Reducciones Formales
a
Teor´ de Categor´ y Sistemas de Tipos
ıa ıas
Entre otros...
Funciones como Abstraccion
Funciones como habitantes de Primera Clase
Funciones de Alto Orden
Closures, Monoids, Functors y Monads
El conflicto de la Pureza
I/O y Datos Externos
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 5/9
13. Generalidades
Generalidades
Fuerte Base Te´rica
o
C´lculo Lambda, Combinatoria, Reducciones Formales
a
Teor´ de Categor´ y Sistemas de Tipos
ıa ıas
Entre otros...
Funciones como Abstraccion
Funciones como habitantes de Primera Clase
Funciones de Alto Orden
Closures, Monoids, Functors y Monads
El conflicto de la Pureza
I/O y Datos Externos
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 5/9
14. Aspectos Te´ricos
o
Aspectos Te´ricos
o
M´todos Formales, contribuci´n de Alonzo Church
e o
C´lculo Lambda
a
Tesis Church-Turing (computabilidad)
M´todos Formales
e
Reducciones Formales
Verificaci´n L´gica
o o
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 6/9
15. Aspectos Te´ricos
o
Aspectos Te´ricos
o
M´todos Formales, contribuci´n de Alonzo Church
e o
C´lculo Lambda
a
Tesis Church-Turing (computabilidad)
M´todos Formales
e
Reducciones Formales
Verificaci´n L´gica
o o
Ejemplos de Combinadores Conocidos
I = λx.x (identity)
T = λxy .x (true)
F = λxy .y (false)
S = λxyz.xz(yz) (successor)
Y = λf .(λx.f (xx))(λx.f (xx))) (y-combinator)
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 6/9
16. Aspectos Te´ricos
o
Aspectos Te´ricos
o
M´todos Formales, contribuci´n de Alonzo Church
e o
C´lculo Lambda
a
Tesis Church-Turing (computabilidad)
M´todos Formales
e
Reducciones Formales
Verificaci´n L´gica
o o
Ejemplos de Combinadores Conocidos
I = λx.x (identity)
T = λxy .x (true)
F = λxy .y (false)
S = λxyz.xz(yz) (successor)
Y = λf .(λx.f (xx))(λx.f (xx))) (y-combinator)
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 6/9
17. Implementacion
Implementacion
Abstracciones
Funci´n
o
Funci´n An´nima
o o
Closure
Monoid
Functor
Monad
Tipificaci´n
o
Calculo Lambda Tipificado
Sistemas de Tipos
Teor´ de Categorias
ıa
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 7/9
18. Implementacion
Implementacion
Abstracciones
Funci´n
o
Funci´n An´nima
o o
Closure
Monoid
Functor
Monad
Tipificaci´n
o
Calculo Lambda Tipificado
Sistemas de Tipos
Teor´ de Categorias
ıa
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 7/9
19. Abstracciones
Abstracciones
Funci´n
o
Como evaluaci´n de una expresi´n
o o
Funci´n An´nima
o o
Habitante de primera clase, con el mismo tratamiento
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 8/9
20. Abstracciones
Abstracciones
Funci´n
o
Como evaluaci´n de una expresi´n
o o
Funci´n An´nima
o o
Habitante de primera clase, con el mismo tratamiento
Closure
Funci´n con Datos (opuesto a Objeto, datos con funciones)
o
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 8/9
21. Abstracciones
Abstracciones
Funci´n
o
Como evaluaci´n de una expresi´n
o o
Funci´n An´nima
o o
Habitante de primera clase, con el mismo tratamiento
Closure
Funci´n con Datos (opuesto a Objeto, datos con funciones)
o
Monoid
Abstracci´n de Operador (aplicado a elementos de un tipo)
o
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 8/9
22. Abstracciones
Abstracciones
Funci´n
o
Como evaluaci´n de una expresi´n
o o
Funci´n An´nima
o o
Habitante de primera clase, con el mismo tratamiento
Closure
Funci´n con Datos (opuesto a Objeto, datos con funciones)
o
Monoid
Abstracci´n de Operador (aplicado a elementos de un tipo)
o
Functor
Funci´n Aplicada a un Tipo
o
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 8/9
23. Abstracciones
Abstracciones
Funci´n
o
Como evaluaci´n de una expresi´n
o o
Funci´n An´nima
o o
Habitante de primera clase, con el mismo tratamiento
Closure
Funci´n con Datos (opuesto a Objeto, datos con funciones)
o
Monoid
Abstracci´n de Operador (aplicado a elementos de un tipo)
o
Functor
Funci´n Aplicada a un Tipo
o
Monad
Cadena de Functors aplicados a un Tipo
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 8/9
24. Abstracciones
Abstracciones
Funci´n
o
Como evaluaci´n de una expresi´n
o o
Funci´n An´nima
o o
Habitante de primera clase, con el mismo tratamiento
Closure
Funci´n con Datos (opuesto a Objeto, datos con funciones)
o
Monoid
Abstracci´n de Operador (aplicado a elementos de un tipo)
o
Functor
Funci´n Aplicada a un Tipo
o
Monad
Cadena de Functors aplicados a un Tipo
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 8/9
25. ¿FIN?
¿FIN?
Preparado con LTEX
A
Compilado el 24 de julio de 2011
Coyright c 2011 Daniel Molina Wegener
Daniel Molina Wegener (coder.cl) Programaci´n Funcional
o 24 de julio de 2011 9/9