Programacion funcional

Solo disponible en BuenasTareas
  • Páginas : 13 (3246 palabras )
  • Descarga(s) : 0
  • Publicado : 17 de mayo de 2011
Leer documento completo
Vista previa del texto
Universidad Nacional del Nordeste
Facultad de Ciencias Exactas y Naturales y Agrimensura

Programación III Conceptos de Programación Funcional

Paradigmas de Programación
Paradigma Funcional
Historia
Sus orígenes provienen del Cálculo Lambda (o λ-cálculo), una teoría matemática elaborada por Alonzo Church como apoyo a sus estudios sobre computabilidad. Los programas escritos en unlenguaje funcional están constituidos únicamente por definiciones de funciones, entendiendo éstas no como subprogramas clásicos de un lenguaje imperativo, sino como funciones puramente matemáticas, en las que se verifican ciertas propiedades como la transparencia referencial. Otras características propias de estos lenguajes son la no existencia de asignaciones de variables y la falta de construccionesestructuradas como la secuencia o la iteración (lo que obliga en la práctica a que todas las repeticiones de instrucciones se lleven a cabo por medio de funciones recursivas).

¿Qué es la Programación Funcional?
C, Java, Pascal, Ada, etc.. son lenguajes imperativos. Son “imperativos” en el sentido de que consisten en una secuencia de comandos que son ejecutados uno tras otro estrictamente. Unprograma funcional es una expresión simple que es ejecutada por evaluación de la expresión. La cuestión está en QUÉ va a ser computado, no en CÓMO va a serlo. Otro lenguaje muy conocido, casi funcional es el lenguaje de consultas estándar de bases de datos, SQL. Una consulta SQL es una expresión con proyecciones, selecciones y uniones. Una consulta dice qué relación se debe computar sin decir cómodebe computarse. Además, la consulta puede ser evaluada en cualquier orden que sea conveniente

Modelo Funcional El modelo funcional, tiene como objetivo la utilización de funciones matemáticas puras sin efectos. El esquema del modelo funcional es similar al de una calculadora. Se establece una sesión interactiva entre sistema y usuario: el usuario introduce una expresión inicial y el sistema laevalúa mediante un proceso de reducción. En este procesos se utilizan las definiciones de funciones realizadas por el programador hasta obtener un valor no reducible. El valor que devuelve una función está únicamente determinado por el valor de sus argumentos consiguiendo que una misma expresión tenga siempre el mismo valor. Es más sencillo demostrar la corrección de los programas ya que se cumplenpropiedades matemáticas tradicionales como la propiedad conmutativa, asociativa, etc. El programador se encarga de definir un conjunto de funciones sin preocuparse de los métodos de evaluación que posteriormente utilice el sistema. Estas funciones no tienen efectos laterales y no dependen de una arquitectura concreta. Este modelo promueve la utilización de una serie de características como lasfunciones de orden superior, los sistemas de inferencia de tipos, el polimorfismo, la evaluación perezosa, etc.

Funciones de orden superior Un lenguaje utiliza funciones de orden superior cuando permite que las funciones sean tratadas como valores de 1ª clase, permitiendo que sean almacenadas en estructuras de datos, que sean pasadas como argumentos de funciones y que sean devueltas comoresultados. La utilización de funciones de orden superior proporciona una mayor flexibilidad al programador, siendo una de las características mas sobresalientes de los lenguajes funcionales.

Universidad Nacional del Nordeste
Facultad de Ciencias Exactas y Naturales y Agrimensura

Programación III Conceptos de Programación Funcional

quad :: Int -> Int quad x = x * x impar :: Int -> Bool impar x| (x `mod` 2) == 1 | otherwise

= True = False

map :: (t -> u) -> [t] -> [u] map f [] = [] map f (a:x) = f a : map f x

map quad [1,2,3,4] = [1,4,9,16] map impar [1,2,3,4] = [True, False, True, False]

Sistemas de Inferencia de Tipos y Polimorfismo Muchos lenguajes funcionales han adoptado un sistema de inferencia de tipos que consiste en: El programador no está obligado a declarar el...
tracking img