La programación funcional es en realidad un paradigma tal como el de objetos y el estructurado.
Se trata de una forma de programación que ya traemos incroporada desde chicos, ¿cómo?, bueno, fijate:
f (x) = 2 * x -- esto es una función ¿no?, OK. Bueno, en ese mismo texto
-- así tipeado en un lenguaje funcional funciona!!
f es una función que toma un entero (x) y retorna x * 2 (tonta explicación, no?)
En la programación funcional, se trabaja con ECUACIONES en vez de funciones y procesos. El programa que resuelve un problema se representa con una ecuación y el resultado de la misma es la solución.
Aunque te parezca raro, es un lenguaje en el que NO EXISTEN VARIABLES, tal y como las conoces, lo único que se transmiten son los parámetros!!!. Pero explicarte todo eso es medio dificil en este poco espacio. En la dirección www.haskell.org vas a encontrar mucha información al respecto.
Por último te digo que si bien parece desconocido, es en el sistema de tipos de estos lenguajes en el cual se basó el desarrollo de JAVA (te suena?, jaja) y que se lo utiliza en ambientes de multiprocesador porque distribuye automáticamente y sin necesidad de tantos cálculos especulativos las tareas en cada micro.
Bueno, consultá haskell (es sólo un estándar funcional) y bajate el intérprete (me olvidaba de decirte que es interpretado, pero no por eso debe considerarse mal, muchas cosas son más óptimas acá aunque no lo creas). Por otro lado, es FREE, que ya es mucho decir, jaja...