Micro-Introducción a la Programacion Funcional

Post on 04-Jul-2015

467 views 1 download

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

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