You are on page 1of 3

Tema 1

¿Qué es programación funcional?

Es un estilo (o paradigma) de programación que se caracteriza por: programar consiste en definir funciones por aplicación y composición de otras más simples
doble x = x + x cuadruple = doble . doble

el método de computación consiste en evaluar expresiones que resultan de aplicar funciones (a argumentos) hasta obtener su valor cuadruple (doble 2) (expresión)
(doble . doble) (2 + 2) doble (doble 4) doble (4 + 4) (4 + 4) + (4 + 4) 32
Tema 1.- ¿Qué es Programación Funcional? Curso 2006-07

(valor)
- 15 -

. pero no LISP. Scheme.2] obtiene [1. y>=prim] Lenguajes (e.g.1. claros y concisos: quicksort [ ] = [ ] quicksort (prim:resto) = quicksort [y | y<-resto.¿Qué es Programación Funcional? Curso 2006-07 .Ventajas de la Programación Funcional Programas más cortos (de 2 a 10 veces). Haskell.1..g. mayor fiabilidad y mejor mantenimiento Incremento de la productividad del programador (entre 9% y 25% según Ericsson) Todo programa (significativo) acabado se modifica muchas veces Tema 1. fácilidad de escritura pares = [2*x | x <. Haskell) y sistemas (e. y<prim] ++ [prim] ++ quicksort [y | y<-resto.3] polimorfismo aumenta la reusabilidad de cualquier tipo (que cuente con una operación <) quicksort puede usarse con listas de elementos evalución perezosa modularidad.]] take 5 pares Tema 1. etc) tipado fuerte detección de errores en compilación quicksort (3. Miranda.2) produce un error de tipos quicksort [3.¿Qué es Programación Funcional? Curso 2006-07 .[1. etc. Hugs) más fáciles para iniciarse y experimentar Menos errores.17 - ..16 - Principales características de los lenguajes funcionales modernos (Clean.2.

:= En programación funcional..) funciones de orden superior alto nivel de abstracción funciones como “ciudadanos de primera clase” aplicación/composición de funciones modularidad cuadruple = doble .¿Qué es Programación Funcional? Curso 2006-07 .¿Qué es Programación Funcional? Curso 2006-07 . almacenamiento y liberación automática Un programa es una serie de definiciones y una ejecución es la evaluación de una expresión que usa las entidades definidas en el programa.) Los programas funcionales se basan en dar definiciones usando el símbolo de igualdad (=). el concepto de posición de memoria a la que se le asigna un valor no existe Si en un programa aparece x = <expresión> x es. de lo contrario no sería correcto. por definición.. Tema 1. en ese mismo programa no puede aparecer otra vez x = . igual a <expresión> Por tanto.19 - .Principales características … (cont... que nada tiene que ver con la asignación.18 - Principales características … (cont. Tema 1. doble gestión de memoria libera de carga al programador inicialización.