Micro-Introducción a la Programacion Funcional

25
Programaci´ on Funcional λ Micro-Introducci´on a la Programaci´on Funcional λ Daniel Molina Wegener (coder.cl) Programaci´ on Funcional 24 de julio de 2011 1/9

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.

Transcript of Micro-Introducción a la Programacion Funcional

Page 1: Micro-Introducción a la Programacion Funcional

Programacion Funcional

λ

Micro-Introduccion

a la

Programacion

Funcional

λ

Daniel Molina Wegener (coder.cl) Programacion Funcional 24 de julio de 2011 1 / 9

Page 2: Micro-Introducción a la Programacion Funcional

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

Page 3: Micro-Introducción a la Programacion Funcional

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

Page 4: Micro-Introducción a la Programacion Funcional

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

Page 5: Micro-Introducción a la Programacion Funcional

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

Page 6: Micro-Introducción a la Programacion Funcional

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

Page 7: Micro-Introducción a la Programacion Funcional

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

Page 8: Micro-Introducción a la Programacion Funcional

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

Page 9: Micro-Introducción a la Programacion Funcional

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

Page 10: Micro-Introducción a la Programacion Funcional

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

Page 11: Micro-Introducción a la Programacion Funcional

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

Page 12: Micro-Introducción a la Programacion Funcional

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

Page 13: Micro-Introducción a la Programacion Funcional

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

Page 14: Micro-Introducción a la Programacion Funcional

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

Page 15: Micro-Introducción a la Programacion Funcional

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

Page 16: Micro-Introducción a la Programacion Funcional

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

Page 17: Micro-Introducción a la Programacion Funcional

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

Page 18: Micro-Introducción a la Programacion Funcional

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

Page 19: Micro-Introducción a la Programacion Funcional

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

Page 20: Micro-Introducción a la Programacion Funcional

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

Page 21: Micro-Introducción a la Programacion Funcional

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

Page 22: Micro-Introducción a la Programacion Funcional

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

Page 23: Micro-Introducción a la Programacion Funcional

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

Page 24: Micro-Introducción a la Programacion Funcional

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

Page 25: Micro-Introducción a la Programacion Funcional

¿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