Upload
damowe
View
467
Download
1
Embed Size (px)
DESCRIPTION
Micro-Introduction to Functional Programming, a conceptual approach to what does means Functional Programming and how it is used and implemented in various languages.
Citation preview
Programacion Funcional
λ
Micro-Introduccion
a la
Programacion
Funcional
λ
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 1 / 9
Programacion Funcional
Daniel Molina Wegener
http://coder.cl/
@damowe en twitter
Copyright c© 2011 Daniel Molina Wegener
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 2 / 9
Tabla de Contenidos
1 Caracterısticas
2 Generalidades
3 Aspectos Teoricos
4 Implementacion
5 Abstracciones
6 ¿FIN?
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 3 / 9
Caracterısticas
Caracterısticas
¿Como se diferencian los lenguajes funcionales?
¿Puede retornar una funcion?
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 4 / 9
Caracterısticas
Caracterısticas
¿Como se diferencian los lenguajes funcionales?
¿Puede retornar una funcion?
¿Puede asignar una funcion a una variable?
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 4 / 9
Caracterısticas
Caracterısticas
¿Como se diferencian los lenguajes funcionales?
¿Puede retornar una funcion?
¿Puede asignar una funcion a una variable?
¿Puede pasar funciones como parametros?
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 4 / 9
Caracterısticas
Caracterısticas
¿Como se diferencian los lenguajes funcionales?
¿Puede retornar una funcion?
¿Puede asignar una funcion a una variable?
¿Puede pasar funciones como parametros?
¿Tiene funciones anonimas?
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 4 / 9
Caracterısticas
Caracterısticas
¿Como se diferencian los lenguajes funcionales?
¿Puede retornar una funcion?
¿Puede asignar una funcion a una variable?
¿Puede pasar funciones como parametros?
¿Tiene funciones anonimas?
¿Soporta recursividad?
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 4 / 9
Caracterısticas
Caracterısticas
¿Como se diferencian los lenguajes funcionales?
¿Puede retornar una funcion?
¿Puede asignar una funcion a una variable?
¿Puede pasar funciones como parametros?
¿Tiene funciones anonimas?
¿Soporta recursividad?
¿Tiene Clases de Tipo (Funcional)?
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 4 / 9
Caracterısticas
Caracterısticas
¿Como se diferencian los lenguajes funcionales?
¿Puede retornar una funcion?
¿Puede asignar una funcion a una variable?
¿Puede pasar funciones como parametros?
¿Tiene funciones anonimas?
¿Soporta recursividad?
¿Tiene Clases de Tipo (Funcional)?
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 4 / 9
Generalidades
Generalidades
Fuerte Base Teorica
Calculo Lambda, Combinatoria, Reducciones FormalesTeorıa de Categorıas y Sistemas de TiposEntre otros...
Funciones como Abstraccion
Funciones como habitantes de Primera ClaseFunciones de Alto OrdenClosures, Monoids, Functors y Monads
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 5 / 9
Generalidades
Generalidades
Fuerte Base Teorica
Calculo Lambda, Combinatoria, Reducciones FormalesTeorıa de Categorıas y Sistemas de TiposEntre otros...
Funciones como Abstraccion
Funciones como habitantes de Primera ClaseFunciones de Alto OrdenClosures, Monoids, Functors y Monads
El conflicto de la Pureza
I/O y Datos Externos
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 5 / 9
Generalidades
Generalidades
Fuerte Base Teorica
Calculo Lambda, Combinatoria, Reducciones FormalesTeorıa de Categorıas y Sistemas de TiposEntre otros...
Funciones como Abstraccion
Funciones como habitantes de Primera ClaseFunciones de Alto OrdenClosures, Monoids, Functors y Monads
El conflicto de la Pureza
I/O y Datos Externos
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 5 / 9
Aspectos Teoricos
Aspectos Teoricos
Metodos Formales, contribucion de Alonzo Church
Calculo LambdaTesis Church-Turing (computabilidad)
Metodos Formales
Reducciones FormalesVerificacion Logica
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 6 / 9
Aspectos Teoricos
Aspectos Teoricos
Metodos Formales, contribucion de Alonzo Church
Calculo LambdaTesis Church-Turing (computabilidad)
Metodos Formales
Reducciones FormalesVerificacion Logica
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) Programacion Funcional 24 de julio de 2011 6 / 9
Aspectos Teoricos
Aspectos Teoricos
Metodos Formales, contribucion de Alonzo Church
Calculo LambdaTesis Church-Turing (computabilidad)
Metodos Formales
Reducciones FormalesVerificacion Logica
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) Programacion Funcional 24 de julio de 2011 6 / 9
Implementacion
Implementacion
Abstracciones
FuncionFuncion AnonimaClosureMonoidFunctorMonad
Tipificacion
Calculo Lambda TipificadoSistemas de TiposTeorıa de Categorias
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 7 / 9
Implementacion
Implementacion
Abstracciones
FuncionFuncion AnonimaClosureMonoidFunctorMonad
Tipificacion
Calculo Lambda TipificadoSistemas de TiposTeorıa de Categorias
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 7 / 9
Abstracciones
Abstracciones
Funcion
Como evaluacion de una expresion
Funcion Anonima
Habitante de primera clase, con el mismo tratamiento
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 8 / 9
Abstracciones
Abstracciones
Funcion
Como evaluacion de una expresion
Funcion Anonima
Habitante de primera clase, con el mismo tratamiento
Closure
Funcion con Datos (opuesto a Objeto, datos con funciones)
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 8 / 9
Abstracciones
Abstracciones
Funcion
Como evaluacion de una expresion
Funcion Anonima
Habitante de primera clase, con el mismo tratamiento
Closure
Funcion con Datos (opuesto a Objeto, datos con funciones)
Monoid
Abstraccion de Operador (aplicado a elementos de un tipo)
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 8 / 9
Abstracciones
Abstracciones
Funcion
Como evaluacion de una expresion
Funcion Anonima
Habitante de primera clase, con el mismo tratamiento
Closure
Funcion con Datos (opuesto a Objeto, datos con funciones)
Monoid
Abstraccion de Operador (aplicado a elementos de un tipo)
Functor
Funcion Aplicada a un Tipo
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 8 / 9
Abstracciones
Abstracciones
Funcion
Como evaluacion de una expresion
Funcion Anonima
Habitante de primera clase, con el mismo tratamiento
Closure
Funcion con Datos (opuesto a Objeto, datos con funciones)
Monoid
Abstraccion de Operador (aplicado a elementos de un tipo)
Functor
Funcion Aplicada a un Tipo
Monad
Cadena de Functors aplicados a un Tipo
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 8 / 9
Abstracciones
Abstracciones
Funcion
Como evaluacion de una expresion
Funcion Anonima
Habitante de primera clase, con el mismo tratamiento
Closure
Funcion con Datos (opuesto a Objeto, datos con funciones)
Monoid
Abstraccion de Operador (aplicado a elementos de un tipo)
Functor
Funcion Aplicada a un Tipo
Monad
Cadena de Functors aplicados a un Tipo
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 8 / 9
¿FIN?
¿FIN?
Preparado con LATEXCompilado el 24 de julio de 2011
Coyright c© 2011 Daniel Molina Wegener
Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 9 / 9