Está en la página 1de 3

Tema 1

Qu es programacin funcional?

Es un estilo (o paradigma) de programacin que se caracteriza por: programar consiste en definir funciones por aplicacin y composicin de otras ms simples
doble x = x + x cuadruple = doble . doble

el mtodo de computacin consiste en evaluar expresiones que resultan de aplicar funciones (a argumentos) hasta obtener su valor cuadruple (doble 2) (expresin)
(doble . doble) (2 + 2) doble (doble 4) doble (4 + 4) (4 + 4) + (4 + 4) 32
Tema 1.- Qu es Programacin Funcional? Curso 2006-07

(valor)
- 15 -

Ventajas de la Programacin Funcional


Programas ms cortos (de 2 a 10 veces), claros y concisos:

quicksort [ ] = [ ] quicksort (prim:resto) = quicksort [y | y<-resto, y<prim] ++ [prim] ++ quicksort [y | y<-resto, y>=prim]
Lenguajes (e.g. Haskell) y sistemas (e.g. Hugs) ms fciles para iniciarse y experimentar Menos errores, mayor fiabilidad y mejor mantenimiento

Incremento de la productividad del programador (entre 9% y 25% segn Ericsson) Todo programa (significativo) acabado se modifica muchas veces

Tema 1.- Qu es Programacin Funcional?

Curso 2006-07

- 16 -

Principales caractersticas de los lenguajes funcionales modernos


(Clean, Miranda, Haskell, etc, pero no LISP, Scheme, etc) tipado fuerte deteccin de errores en compilacin

quicksort (3,1,2) produce un error de tipos quicksort [3,1,2] obtiene [1,2,3]


polimorfismo aumenta la reusabilidad de cualquier tipo (que cuente con una operacin <)

quicksort puede usarse con listas de elementos

evalucin perezosa

modularidad, fcilidad de escritura

pares = [2*x | x <- [1..]] take 5 pares


Tema 1.- Qu es Programacin Funcional? Curso 2006-07 - 17 -

Principales caractersticas (cont.)

funciones de orden superior

alto nivel de abstraccin

funciones como ciudadanos de primera clase aplicacin/composicin de funciones modularidad cuadruple = doble . doble
gestin de memoria libera de carga al programador

inicializacin, almacenamiento y liberacin automtica

Un programa es una serie de definiciones y una ejecucin es la evaluacin de una expresin que usa las entidades definidas en el programa.

Tema 1.- Qu es Programacin Funcional?

Curso 2006-07

- 18 -

Principales caractersticas (cont.)

Los programas funcionales se basan en dar definiciones usando el smbolo de igualdad (=), que nada tiene que ver con la asignacin.

:=

En programacin funcional, el concepto de posicin de memoria a la que se le asigna un valor no existe Si en un programa aparece x = <expresin>
x es, por definicin, igual a <expresin>

Por tanto, en ese mismo programa no puede aparecer otra vez


x = ...

de lo contrario no sera correcto.


Tema 1.- Qu es Programacin Funcional? Curso 2006-07 - 19 -